Понимание функций высшего порядка с map & reduce в JavaScript
Функции высшего порядка
Функции высшего порядка - горячая тема в функциональном программировании. Его использует большинство из нас, даже не подозревая об этом. Итак, в этой статье я устраню всю путаницу, связанную с функциями высшего порядка.
В JavaScript функции рассматриваются как объекты. Их можно присвоить переменной, передать как параметр и вернуть из функции. Поэтому мы назвали их первоклассными объектами.
Итак, функции высшего порядка - это функции, которые получили функции в качестве параметра или возвращают функции в качестве выходных данных.
Это означает, что мы можем передать функцию в качестве параметра другой функции. Нравится..
const foo = call => call();
const sayHi = () => "hi";
foo(sayHi);
Здесь мы передаем функцию sayHi функции foo в качестве аргумента. Этот подход также называется обратным вызовом.
Также мы можем вернуть функцию в качестве вывода. Нравится..
const foo = () => () => "Hi";
foo()();
Здесь мы возвращаем анонимную функцию из функции foo.
Теперь мы разобрались с функциями высшего порядка и смогли изучить некоторые функции высшего порядка, встроенные в Javascript.
карта
Карта - это функция массива более высокого порядка. Требуется функция обратного вызова, и функция будет вызываться для каждого элемента в массиве. Он вернет совершенно новый массив.
Синтаксис функции карты.
array.map((current, index, array) => {})
Возьмем пример.
const arr = [1, 2, 3, 4, 5];
const newArr = arr.map(num => num * 2);
newArr // 2, 4, 6, 8, 10
Здесь мы вызываем функцию для каждого числа и возвращаем число, умноженное на 2.
Примечание. Карта не меняет фактический массив. Вместо этого он создает новый массив с измененными значениями.
Уменьшать
Reduce также является функцией более высокого порядка. Но в отличие от map он вызывает обратный вызов для каждого элемента и возвращает одно уменьшенное значение.
Синтаксис функции сокращения.
array.reduce((accumulator, current, index, array) => {}, initialValue)
Возьмем пример.
const arr = [1, 2, 3, 4, 5];
const sum = arr.reduce((total, num) => total += num, 0);
sum // 15
Здесь мы находим сумму в списке чисел. Сумма - это аккумулятор. Инициализируем его 0 и возвращаем сумму.
Мы можем использовать аккумулятор для вычисления любого типа значения в массиве.
Мы можем вычислить минимальное количество из списка. Нравится..
const are = [5,7,3,9,6,3];
const minimum = arr.reduce((min,num) => min < num ? min : num)
Итак, используйте карту, если вы хотите изменить каждый элемент в массиве. И используйте reduce, если хотите уменьшить массив до одного значения.
Надеюсь, вы узнаете что-то новое из этой статьи. Спасибо за чтение.