Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: groupBy, array, reduce, key function, grouping

Как реализовать функцию groupBy, которая принимает массив и функцию-ключ, и возвращает объект с элементами, сгруппированными по ключу?

Вопрос проверяет умение реализовать функцию группировки массива по ключу, что часто используется для агрегации данных.

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

Функция groupBy принимает массив и функцию-ключ, возвращает объект, где ключи — результаты вызова функции-ключа для каждого элемента, а значения — массивы соответствующих элементов. Реализуется через метод reduce, который на каждой итерации добавляет элемент в нужную группу. Это удобно для группировки данных по категориям.

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

Что такое groupBy и зачем она нужна

Функция groupBy — это утилита для группировки элементов массива по заданному критерию. Она принимает массив и функцию-ключ, которая для каждого элемента возвращает строку или число — ключ группы. Результатом является объект, где каждому ключу соответствует массив элементов, попавших в эту группу. Это часто используется в аналитике, при работе с API или для упрощения обработки данных.

Реализация через reduce

Самый распространённый способ — использовать метод массива 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

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

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

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

Уровень

  • Рейтинг:

    4

  • Сложность:

    4

Навыки

  • JavaScript

    JavaScript

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

#groupBy

#array

#reduce

#key function

#grouping

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

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

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

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