Attaching the input and output formats. `
//Input
[{"id":"146","catId":"25"},
{"id":"200","catId":"25"},
{"id":"250","catId":"55"}];
//Output expected
[{"catId":"25","topicIds":["146","200"]},
{"catId":"55","topicIds":["250"]}];
`
Attaching the input and output formats. `
//Input
[{"id":"146","catId":"25"},
{"id":"200","catId":"25"},
{"id":"250","catId":"55"}];
//Output expected
[{"catId":"25","topicIds":["146","200"]},
{"catId":"55","topicIds":["250"]}];
`
reduce
can be used for grouping problems. Here I'm grouping by catId
and it will return a grouped object
{
25: {
catId: "25",
topicIds: ["146", "200"]
},
55: {
catId: "55",
topicIds: ["250"]
}
}
Then to get the values array use Object.values
let a = [{"id":"146","catId":"25"},
{"id":"200","catId":"25"},
{"id":"250","catId":"55"}];
let res = Object.values(a.reduce((acc,{id,catId}) => {
acc[catId] = acc[catId] || {catId,topicIds:[]}
acc[catId].topicIds.push(id)
return acc
},{}))
console.log(res)