I have an array of objects that look like this:
[
{
makeYear: 2019,
company: 'Mazda',
fleet: '900'
},
{
makeYear: 2019,
company: 'Mercedes',
fleet: '500'
},
{
makeYear: 2020,
company: 'Honda',
fleet: '390'
},
.....
]
I am trying to merge all the properties for a specific makeYear into one object that should look like this
[
{
makeYear: 2019,
Mazda: 900,
Mercedes: 500,
//other companies present for the year
},
{
makeYear: 2020,
Honda: 390,
//other companies present for the year
},
];
I have tried it doing this way, but no luck.
const mergeObjs = input.reduce((res, item) => {
if (!item.makeYear) return res;
res[item.makeYear] = item;
return res;
}, {});
const merged = input.filter(item => item.makeYear).map(item => {
return {...item, ...(mergeObjs[item.makeYear] || {})}
});
Any idea how I can achieve this? TIA