> Как работает функция groupBy в JavaScript (JavaScript)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: Яндекс
Стек: JavaScript
> Пример ответа
Функция groupBy в JavaScript (доступна с ES2024 как Object.groupBy и Map.groupBy) позволяет сгруппировать элементы массива по ключу, который вычисляется с помощью callback-функции. Она возвращает объект (или Map), где ключи - это результаты вызова callback для каждого элемента, а значения - массивы соответствующих элементов.
Пример с Object.groupBy:
JAVASCRIPTconst 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:
JAVASCRIPTconst 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.
> Похожие задачи по frontend
Каков порядок выполнения синхронных задач, микротасков и макротасков в JavaScript
Как собрать неопределённое количество аргументов функции в JavaScript и работать с ними
Что возвращает метод filter в JavaScript, если ни один элемент не подходит под условие
Можно ли пометить стрелочную функцию как асинхронную в JavaScript
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью