Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: array, group by, reduce, filter, partition

Как разделить массив на несколько групп по условию?

Вопрос проверяет знание методов группировки массивов в JavaScript, что необходимо для эффективной обработки данных.

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

Для разделения массива на группы по условию можно использовать метод reduce, который позволяет накопить результат в объекте с ключами-группами. Также подходит комбинация filter для бинарного разделения. Метод groupBy из Object.groupBy (ES2024) упрощает задачу, но требует полифилла.

Длинный ответ

Группировка массива в JavaScript

Разделение массива на группы по условию — частая задача при обработке данных. Например, нужно разбить пользователей по возрасту или товары по категориям. В JavaScript есть несколько подходов, от классических до современных.

Метод reduce

Самый универсальный способ — использовать reduce. Он проходит по каждому элементу и собирает результат в объект, где ключи — названия групп, а значения — массивы элементов.

const items = [
  { name: 'A', type: 'fruit' },
  { name: 'B', type: 'vegetable' },
  { name: 'C', type: 'fruit' }
];

const grouped = items.reduce((acc, item) => {
  const key = item.type;
  if (!acc[key]) acc[key] = [];
  acc[key].push(item);
  return acc;
}, {});

console.log(grouped);
// { fruit: [{...}, {...}], vegetable: [{...}] }

Бинарное разделение (partition)

Если нужно разделить массив на две группы по условию (true/false), удобно использовать filter дважды или один reduce.

const numbers = [1, 2, 3, 4, 5];
const [even, odd] = numbers.reduce(
  ([even, odd], n) => {
    n % 2 === 0 ? even.push(n) : odd.push(n);
    return [even, odd];
  },
  [[], []]
);

console.log(even); // [2, 4]
console.log(odd);  // [1, 3, 5]

Современный метод Object.groupBy

В ES2024 появился нативный метод Object.groupBy, который делает код чище. Однако он пока не везде поддерживается, поэтому может потребоваться полифилл.

const grouped = Object.groupBy(items, item => item.type);
console.log(grouped);
// { fruit: [{...}, {...}], vegetable: [{...}] }

Вывод

Группировка массивов применяется везде, где нужно агрегировать данные: от UI-компонентов до серверной обработки. Для максимальной совместимости используйте reduce, а для современных проектов — Object.groupBy с полифиллом.

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию

Уровень

  • Рейтинг:

    4

  • Сложность:

    3

Навыки

  • JavaScript

    JavaScript

Ключевые слова

#array

#group by

#reduce

#filter

#partition

Подпишись на React Developer в телеграм

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию