Возможно, вы иногда видели функцию .reduce() как какую-то сверхспецифическую функцию, которую вам, вероятно, никогда не придется использовать. Вы так ошибаетесь.

Может быть, вы видите в каком-то случае, как это:

И вы думаете, что это полезная функция, но только для некоторых конкретных случаев. Вы совершенно неправы.

Вернуться к основам

Метод reduce() уменьшает массив до одного значения. Очевидно, что функция редукции уменьшает массив, но что это значит?

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

Характеристики

Описание функции сокращения выглядит следующим образом:

arr.reduce (обратный вызов (аккумулятор, ActualValue [, индекс [, массив]]) [, initialValue])

На первый взгляд кажется немного запутанным объявлением. ¿Что это за обратный вызов? ¿А Аккумулятор? Посмотрим:

Перезвони

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

Аккумулятор

Это значение объединяет все значения, возвращаемые обратными вызовами. Это означает, что при каждом взаимодействии цикла вы должны возвращать значение накопления.

Реальная стоимость

Это текущее обрабатываемое значение. Это каждый элемент массива в каждом взаимодействии.

Показатель

Это текущий индекс обрабатываемого значения.

Множество

Это исходный массив.

Первоначальный значение

Это начальное значение аккумулятора. Если это значение не задано, это поле получает значение из первого элемента массива, а фактическое значение начинается со второго элемента.

Хорошо, у нас есть свойства, но как мы можем использовать этот метод для оптимизации кода?

Магия: варианты использования

Одной из наиболее важных особенностей этих функций является их гибкость. Вы можете вернуть все, что хотите: логическое значение, строку, число, массив или даже объект.

Приведу пример: вы работаете с двумерным массивом людей, значениями которых являются имя и возраст:

const people=[{имя:Джон,возраст:52}, {имя:Джек,возраст:25}, {имя: Мэгги,возраст:15}]

Ну, мы хотим извлечь массив только имен тех, кто из этих людей может голосовать на следующих выборах. Мы можем использовать такие функции, как forEach и устанавливать значения в другую переменную с помощью push, это будет выглядеть так:

А в случае функции сокращения это так:

Мы можем создать более сложные условия для сокращения функции, но самое главное помнить, что всегда нужно возвращать de accumulator к следующей итерации цикла.

Вывод

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