Понимание функций высшего порядка с 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, если хотите уменьшить массив до одного значения.

Надеюсь, вы узнаете что-то новое из этой статьи. Спасибо за чтение.