Как сгруппировать числа по чётности через reduce?

Начните с аккумулятора с двумя пустыми массивами, на каждом шаге выберите группу по остатку от деления на 2 и верните тот же аккумулятор после добавления элемента.

Короткий ответ

Что ответить на собеседовании

Начните с аккумулятора с двумя пустыми массивами, на каждом шаге выберите группу по остатку от деления на 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: []});

Мутация здесь ограничена новым локальным аккумулятором, не исходными данными. Создавать копии всех групп на каждой итерации не требуется: это может привести к лишнему квадратичному копированию. Для пустого входа останутся две пустые группы.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее