input = [ { id: 1, name: "aaa" }, { id: 1, name: "bbb" }, { id: 2, name: "ccc" }, { id: 3, name: "ddd" } ]Necesita salida como a continuación ..
[{id: 1,name: "aaa, bbb"},{id: 2,name: "ccc"},{id: 3,name: "ddd"}]Puede lograr fácilmente el resultado usando reduce
const input = [ { id: 1, name: "aaa" }, { id: 1, name: "bbb" }, { id: 2, name: "ccc" }, { id: 3, name: "ddd" }, ]; const result = input.reduce((acc, curr) => { const objInAcc = acc.find((o) => o.id === curr.id); !objInAcc ? acc.push(curr) : (objInAcc.name += `, ${curr.name}`); return acc; }, []); console.log(result);Puede agrupar datos de su matriz por id con un reductor como ese
const input = [{ id: 1, name: "aaa" }, { id: 1, name: "bbb" }, { id: 2, name: "ccc" }, { id: 3, name: "ddd" }] const groupedNames = input.reduce<Record<number,string[]>>((grouped, { id, name }) => ( { ...grouped, [id]: (grouped[id] || []).concat(name) } ), {}) // then get the names as groupedNames[id].join(', ') // or map it to your preferred format Object.entries(groupedNames).map(([id, names]) => ({ id, name: names.join(', ') }))