Вопрос проверяет понимание метода reduce для агрегации данных в массиве и его применения в реальных задачах.
Метод reduce — это мощный инструмент функционального программирования в JavaScript, предназначенный для преобразования массива в единственное значение. Он последовательно обрабатывает каждый элемент, применяя к нему и текущему промежуточному результату (аккумулятору) заданную функцию. Это делает reduce универсальным для задач агрегации, таких как суммирование, нахождение максимума или преобразование структур данных.
Синтаксис метода: array.reduce(callback(accumulator, currentValue, index, array), initialValue). Первый аргумент — функция-колбэк, которая вызывается для каждого элемента. Второй аргумент (опциональный) — начальное значение аккумулятора. Если его не указать, аккумулятором станет первый элемент массива, а обработка начнётся со второго.
Рассмотрим несколько практических примеров:
// 1. Сумма чисел в массиве
const numbers = [1, 2, 3, 4];
const sum = numbers.reduce((acc, num) => acc + num, 0);
console.log(sum); // 10
// 2. Поиск максимального значения
const max = numbers.reduce((acc, num) => Math.max(acc, num));
console.log(max); // 4
// 3. Группировка объектов по свойству
const items = [
{ category: 'fruit', name: 'apple' },
{ category: 'vegetable', name: 'carrot' },
{ category: 'fruit', name: 'banana' }
];
const grouped = items.reduce((acc, item) => {
if (!acc[item.category]) acc[item.category] = [];
acc[item.category].push(item.name);
return acc;
}, {});
console.log(grouped); // { fruit: ['apple', 'banana'], vegetable: ['carrot'] }Вывод: Используйте reduce, когда нужно получить одно значение из массива через последовательную обработку элементов. Он особенно полезен в функциональном стиле и для сложных агрегаций, но для простых сумм или конкатенаций иногда подойдут более простые методы, такие как forEach или циклы.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию