Вопрос проверяет понимание различий между методами массивов reduce, filter и map, а также умение выбирать подходящий метод для конкретной задачи.
Методы filter и map всегда возвращают новый массив той же длины (или короче для filter). reduce же позволяет получить произвольный результат, накапливая значение на каждой итерации. Это делает его более гибким, но и более сложным для чтения.
// Сумма чисел
const numbers = [1, 2, 3, 4];
const sum = numbers.reduce((acc, curr) => acc + curr, 0); // 10
// Группировка объектов по свойству
const users = [
{ name: 'Alice', age: 25 },
{ name: 'Bob', age: 30 },
{ name: 'Charlie', age: 25 }
];
const groupedByAge = users.reduce((acc, user) => {
(acc[user.age] = acc[user.age] || []).push(user);
return acc;
}, {});
// { '25': [Alice, Charlie], '30': [Bob] }
// Цепочка filter + map через reduce
const numbers = [1, 2, 3, 4, 5];
const result = numbers.reduce((acc, n) => {
if (n % 2 === 0) acc.push(n * 2);
return acc;
}, []); // [4, 8]Используйте reduce, когда нужно агрегировать данные или выполнить преобразование, которое не укладывается в простую фильтрацию или отображение. Для простых случаев предпочтительнее filter и map — они более читаемы и понятны.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию