Node.js как разделить массив на несколько частей по параметру
Доброго времени суток!
Имею массив где в каждом элементе есть параметр category который повторяется у нескольких элементов. Как более просто разделить один массив на несколько ( в зависимости сколько в массиве разных групп ) по параметру category ?
[
{
id: 1,
category: 'main'
},
{
id: 2,
category: 'main'
},
{
id: 3,
category: 'system'
},
{
id: 3,
category: 'social'
},
]
Пример массива выше, нужно получить из него 3 массива с параметрами main, system и social. Буду благодарен за помощь. Возможно, есть готовые пакеты для разделения массивов таким образом.
Ответы (1 шт):
Автор решения: Dmitrii Sedov
→ Ссылка
Всё довольно просто, можно сделать например так:
UPD теперь 3 переменные у которых map будет работать
UPD2 еще дополнил ответ
const arr = [
{
id: 1,
category: 'main'
},
{
id: 2,
category: 'main'
},
{
id: 3,
category: 'system'
},
{
id: 3,
category: 'social'
},
];
const result = arr.reduce((res, item) => {
if (res.hasOwnProperty(item.category)) res[item.category].push(item);
else res[item.category] = [item];
return res;
}, {});
const categories = Object.keys(result)
categories.map(key => {
result[key].map(item => console.log(key, item))
});