Вопрос проверяет умение реализовать функцию группировки массива по ключу, что часто используется для агрегации данных.
Функция groupBy — это утилита для группировки элементов массива по заданному критерию. Она принимает массив и функцию-ключ, которая для каждого элемента возвращает строку или число — ключ группы. Результатом является объект, где каждому ключу соответствует массив элементов, попавших в эту группу. Это часто используется в аналитике, при работе с API или для упрощения обработки данных.
Самый распространённый способ — использовать метод массива reduce. Он проходит по каждому элементу, вычисляет ключ с помощью функции-ключа и добавляет элемент в соответствующую группу. Если группы ещё нет, создаётся новый массив.
function groupBy(array, keyFn) {
return array.reduce((acc, item) => {
const key = keyFn(item);
if (!acc[key]) {
acc[key] = [];
}
acc[key].push(item);
return acc;
}, {});
}
// Пример использования
const data = [
{ name: 'Alice', age: 25 },
{ name: 'Bob', age: 30 },
{ name: 'Charlie', age: 25 }
];
const grouped = groupBy(data, person => person.age);
// Результат: { '25': [{...}, {...}], '30': [{...}] }Можно реализовать groupBy через цикл for...of или forEach, но reduce более лаконичен и функционален. Также существуют библиотеки вроде Lodash с готовой функцией _.groupBy, но понимание внутренней реализации полезно для собеседований и кастомных случаев.
Функция groupBy полезна для структурирования данных по категориям, например, для группировки заказов по статусу или пользователей по возрасту. Её реализация через reduce — классический пример работы с аккумулятором в JavaScript.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию