Функции высшего порядка — JavaScript

Функции высшего порядка — важная и мощная концепция программирования, позволяющая писать более гибкий и модульный код. В JavaScript это функции, которые используют другие функции обратного вызова, либо принимая их в качестве аргументов, либо возвращая их в качестве вывода.

В JavaScript у нас есть несколько функций array более высокого порядка, в том числе:

  • Функция Map: это функция более высокого порядка, которая принимает массив и функцию в качестве аргументов и возвращает новый измененный массив, являющийся результатом применения функции к каждому элементу предыдущего массива.
let array1 = [3, 5, 17, 30];

//create function
function multiply(p1) {
  return p1 * 2;
}
//pass function as an argument
const map1 = array1.map(multiply);

console.log(map1);
// expected output: Array [6,10,34,60]
  • Функция фильтра: это функция более высокого порядка, которая принимает массив и функцию в качестве аргументов, но в этом случае возвращает только новый массив элементов, которые соответствуют заданному условию в функции.
let array1 = [3, 5, 17, 30];

//filters out only numbers greater than 6
const result = array1.filter(x => x > 6);

console.log(result);
// expected output: Array [17,30]
  • Функция сокращения: это функция более высокого порядка, которая принимает массив и функцию в качестве аргументов, но возвращает только одно значение, являющееся результатом применения функции к каждому элементу массива в определенный порядок. Это может сбивать с толку, поэтому давайте воспользуемся распространенным и простым примером прямо из MDN, чтобы объяснить
const array1 = [1, 2, 3, 4];

const initialValue = 0;

// 0 + 1 + 2 + 3 + 4
const sumWithInitial = array1.reduce(
  (accumulator, currentValue) => accumulator + currentValue,
  initialValue
);

console.log(sumWithInitial);
//Expected  output: 10

Редьюсер просматривает массив поэлементно, на каждом шаге добавляя текущее значение массива к результату предыдущего шага (этот результат является текущей суммой всех предыдущих шагов) — до тех пор, пока не будет больше нет элементов для добавления. Подробнее здесь..

  • Функция Sort :это функция более высокого порядка, которая принимает массив и функцию в качестве аргументов и возвращает ссылку на тот же массив, теперь отсортированный в соответствии с результатами применения функции к каждому элементу. Однако это можно использовать по умолчанию (где все элементы рассматриваются как строки и сортируются в порядке возрастания) без аргумента функции, например..
const names = ['Michael','Amy', 'John', 'Faith', 'Dan'];

//the sort function in default
names.sort();
console.log(names);
// expected output: Array ["Amy", "Dan", "Faith", "John", "Michael"]

Однако, когда нам нужно отсортировать другие вещи помимо строк, например, числа, нам нужно будет добавить функцию для обработки этого. Вот пример сортировки чисел

const array1 = [1, 30, 4, 21, 10000];

//function that sorts by going through and return the lowest of two numbers
function numSort (a,b) {
  return (a - b);
}

//calling the sort function with the numSort callback function
array1.sort(numSort);
console.log(array1);
//Expected result : [1,4,21,30,100000]
  • Функция For Each: это функция более высокого порядка, которая принимает массив и функцию в качестве аргументов и применяет функцию к каждому элементу массива. Он не возвращает новый массив, а просто выполняет действие над каждым элементом того же массива.
const foods = ['pizza', 'spaghetti', 'food from Chowopa.com', 'burgers'];

//applies this function on each element in the foods array
foods.forEach((food) => {
  let statement = `I am hungry, maybe I'll get ${food}`;
  console.log(statement);
});

Функции высшего порядка упрощают написание более лаконичного и выразительного кода, а также избавляют от необходимости писать сложные циклы или условные операторы.

Надеюсь, вы нашли это полезным, оставьте мне 50 хлопков и комментарий. Чао.