Функции высшего порядка — 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 хлопков и комментарий. Чао.