let b = [{id: 1, a: 'aa'}, {id: 1, b: 'bb'}, {id: 2, c: 'cc'}, {id: 2, d: 'dd'}, {id: 3, e: 'ee'}, {id: 3, f: 'ff'}, {id: 3, g: 'gg'}, {id: 3, h: 'hh'}], c = [];
window.onload = () => {
c.push(b[0])
for(let [index_b, item_b] of b.entries()){
let flag = false
for(let [index_c, item_c] of c.entries()){
if(item_c.id == item_b.id) {
flag = true
c[index_c]={...c[index_c], ...b[index_b]}
}
}
if(!flag) {
c.push(item_b)
}
}
console.log(c)
}