> Как работает функция groupBy в JavaScript (JavaScript)

Уровень: senior · Роль: frontend · Категория: Технические вопросы

Компании: Яндекс

Стек: JavaScript

> Пример ответа

Функция groupBy в JavaScript (доступна с ES2024 как Object.groupBy и Map.groupBy) позволяет сгруппировать элементы массива по ключу, который вычисляется с помощью callback-функции. Она возвращает объект (или Map), где ключи - это результаты вызова callback для каждого элемента, а значения - массивы соответствующих элементов.

Пример с Object.groupBy:

JAVASCRIPT
const users = [
{ name: 'Анна', age: 25 },
{ name: 'Иван', age: 30 },
{ name: 'Мария', age: 25 }
];
const groupedByAge = Object.groupBy(users, user => user.age);
// Результат:
// {
// 25: [{ name: 'Анна', age: 25 }, { name: 'Мария', age: 25 }],
// 30: [{ name: 'Иван', age: 30 }]
// }

Map.groupBy возвращает Map, что удобно, когда ключи не являются строками или требуется сохранить порядок вставки.

Ранее (до ES2024) разработчики реализовывали groupBy вручную через reduce:

JAVASCRIPT
const groupBy = (arr, keyFn) => {
return arr.reduce((acc, item) => {
const key = keyFn(item);
if (!acc[key]) acc[key] = [];
acc[key].push(item);
return acc;
}, {});
};

Важно: Object.groupBy не включает прототипные свойства объекта, а ключи всегда преобразуются в строки. Для группировки по сложным типам используйте Map.groupBy.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью