Estoy tratando de fusionar una matriz de objetos con la entrada dada con una matriz de objetos para obtener el siguiente resultado. Busco una posible solución para implementar esto con array.reduce. Aporte:
const items = [ { id: 1, name: 'a' }, { id: 2, name: 'b' }, { id: 3, name: 'c' }, { id: 1, name: 'd' }, { id: 3, name: 'f' }, { id: 1, name: 'a' }, { id: 3, name: 'c' }, ]producción:
[ { id: 1, names: ['a', 'd']}, { id: 2, names: ['b']}, { id: 3, names: ['c', 'f']} ] function test(ar) { let obj = {}; ar.map((val, i) => { let ar=[] if (obj[val.id]) { obj[val.id].push(val.name) }else{ obj[val.id] = [...val.name]; } }); //console.log(obj) let result=[] for(let key in obj){ result.push({ id:key,names:[...new Set(obj[key])] }) } return result } console.log(test([ { id: 1, name: "a" }, { id: 2, name: "b" }, { id: 3, name: "c" }, { id: 1, name: "d" }, { id: 3, name: "f" }, { id: 1, name: "a" }, { id: 3, name: "c" }, ]));