I want to group by that array to another array by name.
var cars = [
{
'name': 'audi',
'model': 'r8',
'year': '2012'
}, {
'name': 'audi',
'model': 'rs5',
'year': '2013'
}, {
'name': 'ford',
'model': 'mustang',
'year': '2012'
}, {
'name': 'ford',
'model': 'fusion',
'year': '2015'
}
];
I expect that result (i omitted name inside items
objects but I don't mind if you leave it there, if it would be to complicated (and slower):
var cars = [
{
name: 'audi',
items: [
{
'model': 'r8',
'year': '2012'
}, {
'model': 'rs5',
'year': '2013'
},
],
},
{
name: 'ford'
items: [
{
'model': 'mustang',
'year': '2012'
}, {
'model': 'fusion',
'year': '2015'
}
]
}
]
I was trying to achive that with reduce
let group = cars.reduce((r, a) => {
r[a.name] = [...r[a.name] || [], a];
return r;
}, {});
but it's far from my expectation, because haven't object with name
property, and without items
array.