reduce(). Этот метод позволяет последовательно обработать элементы массива и свести их к одному значению, которое можно использовать далее. С помощью reduce() решаются самые разные задачи: суммирование, фильтрация, сортировка и многое другое.Суть метода reduce()
Метод reduce() проходит по каждому элементу массива и накапливает результат предыдущего шага в специальном аккумуляторе. Результатом выполнения метода является конечное значение аккумулятора.
Синтаксис метода reduce()
arr.reduce(callback[, initialValue])callback— функция обратного вызова, выполняющаяся на каждом шаге итерации.initialValue— начальное значение аккумулятора (необязательно).
Функция обратного вызова имеет четыре аргумента:
function callback(acc, currentValue, index, arr) {
// acc — аккумулированное значение
// currentValue — текущий элемент массива
// index — индекс текущего элемента
// arr — оригинальный массив
}Примеры использования
1. Суммирование элементов массива
const numbers = [1, 2, 3, 4, 5];
const sum = numbers.reduce((acc, val) => acc + val, 0);
console.log(sum); // Output: 152. Нахождение максимального элемента
const nums = [5, 3, 9, 1, 11];
const maxNum = nums.reduce((prevMax, currVal) => Math.max(prevMax, currVal));
console.log(maxNum); // Output: 113. Преобразование массива объектов в объект
const users = [{ id: 1, name: 'John' }, { id: 2, name: 'Alice' }];
const userMap = users.reduce((map, user) => ({ ...map, [user.id]: user }), {});
console.log(userMap); // Output: {1: {id: 1, name: "John"}, 2: {id: 2, name: "Alice"}}4. Фильтрация и подсчет элементов
const fruits = ['apple', 'banana', 'orange'];
const fruitCount = fruits.reduce((count, fruit) => ({
...count,
[fruit]: count[fruit] ? count[fruit] + 1 : 1
}), {});
console.log(fruitCount); // Output: { apple: 1, banana: 1, orange: 1 }Метод reduce() — невероятно мощный инструмент для работы с массивами в JavaScript. Он позволяет элегантно и лаконично решать множество задач, от элементарных расчётов до сложных преобразований данных. Добавьте
reduce() в арсенал своих инструментов и сделайте свой код чище и эффективнее.