PassFront
  1. PassFront
  2. База знаний
  3. Массивы и структуры данных

Для чего нужен reduce?

Массивы и структуры данных

`reduce` — метод массива, который сворачивает все элементы в одно значение, применяя функцию-аккумулятор слева направо. Это самый универсальный метод перебора.

Синтаксис

arr.reduce((accumulator, current, index, array) => newAccumulator, initialValue);
  • accumulator — накопленное значение.
  • current — текущий элемент.
  • initialValue — начальное значение (важно указывать).

Примеры

// Сумма
[1, 2, 3, 4].reduce((acc, n) => acc + n, 0); // 10

// Максимум
[3, 7, 2].reduce((max, n) => Math.max(max, n), -Infinity); // 7

// Группировка
users.reduce((acc, u) => {
  (acc[u.role] ??= []).push(u);
  return acc;
}, {});

// Подсчёт вхождений
['a', 'b', 'a'].reduce((acc, x) => {
  acc[x] = (acc[x] || 0) + 1;
  return acc;
}, {});

Зачем нужен

reduce заменяет циклы для агрегации: суммы, объекты из массивов, флаттенинг, композиция функций. Через него можно выразить map и filter.

Нюансы

  • Всегда задавайте initialValue — иначе на пустом массиве будет ошибка, а первый элемент станет аккумулятором.
  • Возвращайте аккумулятор из коллбэка.

Коротко для собеседования

reduce сворачивает массив в одно значение через функцию-аккумулятор: суммы, группировки, подсчёты, построение объектов. Универсален (выражает map/filter). Задавайте initialValue и всегда возвращайте аккумулятор.

Другие вопросы раздела