Пошук уроків, статей та іншого контенту
Перетворіть масив об'єктів на об'єкт, згрупований за значенням заданого поля.
Напишіть функцію solve(items, key), яка приймає масив об'єктів та ім'я поля, і повертає об'єкт, де кожен ключ — унікальне значення цього поля, а значення — масив усіх елементів з таким значенням поля.
Приклади
Вхід: solve([{ category: "фрукти", name: "яблуко" }, { category: "овочі", name: "морква" }, { category: "фрукти", name: "банан" }], "category")
Вихід: { фрукти: [{...яблуко}, {...банан}], овочі: [{...морква}] }
Ваше рішення
Підказки
reduce() з початковим значенням {} добре підходить для побудови об'єкта-групування.
Для кожного елемента: якщо групи з таким значенням ключа ще немає в акумуляторі, створіть порожній масив, потім додайте елемент.
function solve(items, key) {
return items.reduce((acc, item) => {
const groupKey = item[key];
acc[groupKey] = acc[groupKey] ?? [];
acc[groupKey].push(item);
return acc;
}, {});
}reduce() будує об'єкт-акумулятор: для кожного елемента ?? створює порожній масив під новим значенням ключа групи (якщо його ще не було), а push додає туди сам елемент.