Что делает метод reduce js?
Основная суть метода reduce() - свести какие то данные из массива к одному значению. Данный метод хорошо подходит для ситуаций когда нужно обработать массив - например посчитать значения внутри и получить это значение. Для каждого элемента исходного массива вызывается указанная функция в которую передаются текущий элемент массива и переменная-аккумулятор, в которую мы сохраняем результат выполнения функции, и которая в итоге возвращается как финальный результат.
Рассмотрим пример:
// Корзина товаров на сайте
const cart = [
{name:'Milk', price: 25},
{name:'Bread', price: 12},
{name:'Eggs', price: 17},
];
// Как просто посчитать сумму всей корзины? Применим reduce():
const cartTotal = cart.reduce((totalSumm, item) => {
totalSumm += item.price;
// мы всегда должны возвращать аккумулятор как результат работы над каждым элементом.
return totalSumm;
// 0 - здесь, это начальное значение totalSumm.
}, 0);
console.log(cartTotal);
// -> 54
Метод reduce()
в JavaScript используется для преобразования массива в одно значение (например, число, строку или объект) путем применения функции к каждому элементу массива и накоплению результата.
Синтаксис метода reduce()
выглядит следующим образом:
array.reduce(callback(accumulator, currentValue[, index[, array]])[, initialValue])
callback
- функция, которая будет применена к каждому элементу массива. Она принимает четыре аргумента:accumulator
(аккумулятор),currentValue
(текущий элемент),index
(индекс текущего элемента) иarray
(исходный массив).initialValue
(необязательный) - начальное значение аккумулятора.
Пример использования метода reduce()
:
const numbers = [1, 2, 3, 4, 5];
// Сумма всех элементов массива
const sum = numbers.reduce((accumulator, currentValue) => accumulator + currentValue, 0);
console.log(sum); // => 15
// Поиск максимального значения в массиве
const max = numbers.reduce((accumulator, currentValue) => Math.max(accumulator, currentValue), -Infinity);
console.log(max); // => 5
// Преобразование массива строк в одну строку
const words = ['Hello', 'world', '!'];
const sentence = words.reduce((accumulator, currentValue) => accumulator + ' ' + currentValue, '');
console.log(sentence); // => Hello world !
В данном примере метод reduce()
используется для нахождения суммы элементов массива, поиска максимального значения и объединения строк в одну строку.
Метод reduce в JavaScript применяется к массивам и выполняет функцию обратного вызова (callback function) на каждом элементе массива (слева направо), результатом чего является одно значение.
Пример:
const array = [1, 2, 3, 4];
const sum = array.reduce((accumulator, currentValue) => {
return accumulator + currentValue;
}, 0);
console.log(sum); // Вывод: 10
Здесь accumulator — это накопитель, который хранит результат предыдущих вызовов функции, а currentValue — текущий обрабатываемый элемент массива.