Начните с аккумулятора с двумя пустыми массивами, на каждом шаге выберите группу по остатку от деления на 2 и верните тот же аккумулятор после добавления элемента.
Как сгруппировать числа по чётности через reduce?
Начните с аккумулятора с двумя пустыми массивами, на каждом шаге выберите группу по остатку от деления на 2 и верните тот же аккумулятор после добавления элемента.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Для массива [1,2,3,4,5] создайте объект {even:[2,4], odd:[1,3,5]} через reduce. Порядок внутри групп сохраняется, исходный массив не меняется; все значения — целые числа.
Ответ
Начните с аккумулятора с двумя пустыми массивами, на каждом шаге выберите группу по остатку от деления на 2 и верните тот же аккумулятор после добавления элемента.
const grouped = [1, 2, 3, 4, 5].reduce((acc, value) => {
acc[value % 2 === 0 ? 'even' : 'odd'].push(value);
return acc;
}, {even: [], odd: []});
Мутация здесь ограничена новым локальным аккумулятором, не исходными данными. Создавать копии всех групп на каждой итерации не требуется: это может привести к лишнему квадратичному копированию. Для пустого входа останутся две пустые группы.