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))
});

→ Ссылка