Object.groupBy
Группирует элементы массива по ключу.
Доступно с: ES2024
Синтаксис
Object.groupBy(items, callbackFn)Параметры
| Параметр | Тип | Описание |
|---|---|---|
| items | Iterable | Массив или другой перебираемый объект. |
| callbackFn | Function | Функция, которая возвращает ключ группы для элемента. |
Возвращаемое значение
objectОбъект, где каждый ключ — группа, а значение — массив её элементов.
Примеры
Чётные и нечётные числа:
const groups = Object.groupBy([1, 2, 3, 4, 5], (n) => (n % 2 === 0 ? 'even' : 'odd'));
console.log(groups.even.join(', '));
console.log(groups.odd.join(', '));Результат:
2, 4
1, 3, 5Товары по категориям:
const products = [
{ name: 'Apple', type: 'fruit' },
{ name: 'Carrot', type: 'vegetable' },
{ name: 'Pear', type: 'fruit' },
];
const byType = Object.groupBy(products, (product) => product.type);
console.log(byType.fruit.map((p) => p.name).join(', '));
console.log(Object.keys(byType));Результат:
Apple, Pear
[
"fruit",
"vegetable"
]Примечания
Если ключи групп — не строки (например объекты), используйте Map.groupBy(). До появления этого метода группировку писали через reduce().
См. также
- Map.groupBy — Группирует элементы в Map по любому ключу.
- Array.prototype.reduce — Сводит массив к одному значению.
- Array.prototype.filter — Создаёт новый массив из элементов, прошедших проверку.
Вопросы и ответы по теме
В учебнике
- Перебор и функции Object — Как перебрать объект в JavaScript: Object.keys, Object.values, Object.entries, Object.fromEntries, for...in и Object.hasOwn.