Как работает функция reduce в Javascript?

post_post_title__ZXHn9

В языке javascript существует очень много встроенных полезных функций для работы с массивами.

Одной из самых трудно-понимаемых является reduce. В этой статье я расскажу вам зачем нужен метод reduce, как он может быть полезен, а так же покажу реальные use-case в production коде как его применять.

Итак для начала давай те разберем такое понятие как функция высшего порядка. По сути это функция, которая в качестве аргумента принимает другую функцию, а так же может возвращать другую функцию с помощью слова return Так вот функция reduce - это встроенная функция высшего порядка в языке javascript, которая вызывается на массивах и принимает callback функцию первым аргументом и вызывает ее на каждой итерации массива, а так же начальное значение куда будет складываться результаты всех вызовов callback функции.

Давай те рассмотрим вот такой пример.

const letters = ['k','i','r','i','l','l'];
const name = letters.reduce((letter,word) => {
  return letter + word
},'');

В данном коде у нас есть массив букв. И у нас есть задача склеить эти буквы в слово. Мы вызываем функцию reduce и говорим что начальное значение будет пустая строка - второй аргумент функции reduce. Первым аргументом мы передаем ту самую функцию callback, которая первым параметром принимает аккумулятор - то самое значение куда "суммируются" все вызовы на каждой итерации, и так же второй аргумент это текущее значение в массиве (i-ый элемент). На выходе мы получаем слово из букв. То есть reduce помогает нам получить итоговое знчение из массива.

reduce

Мне нравиться данная илюстрация для reduce. То есть map функцией мв трансформируем один массив в другой, а reducec сокращаем массив в одно значение.