I have this array of objects
var worksSummaryDetailsArr = [
{
year: 2020,
worksSummaryDetailsObj: [ [Object], [Object], [Object], [Object] ]
},
{
year: 2021,
worksSummaryDetailsObj: [ [Object], [Object], [Object], [Object] ]
},
{
year: 2022,
worksSummaryDetailsObj: [ [Object], [Object], [Object], [Object] ]
},
{
year: 2021,
worksSummaryDetailsObj: [ [Object], [Object], [Object], [Object] ]
},
{
year: 2022,
worksSummaryDetailsObj: [ [Object], [Object], [Object], [Object] ]
}
]
I want to merge it into
{
year: 2020,
worksSummaryDetailsObj: [ [Object], [Object], [Object], [Object] ]
},
{
year: 2021,
worksSummaryDetailsObj: [ [Object], [Object], [Object], [Object],[Object], [Object], [Object], [Object] ]
},
{
year: 2022,
worksSummaryDetailsObj: [ [Object], [Object], [Object], [Object],[Object], [Object], [Object], [Object] ]
},
I have tried using the set function and mapping with the same year, and the output was the same years were merged correctly but the worksSummaryDetailsObj contains wrong data
here is my code
const r = [...new Set(worksSummaryDetailsArr.map((i) => i.year))].map((i) => ({
year: i,
worksSummaryDetailsObj: [...new Set(worksSummaryDetailsArr.filter(({ year: c }) => c === i))],
}));
console.log(r);