function mergePropertyById(arr, property) {
const tempIds = [],
newArr = []
for (const item of arr) {
if (!tempIds.includes(item.id)) {
const obj = { id: item.id }
obj[property] = [item[property]]
newArr.push(obj)
tempIds.push(item.id)
} else {
for (const ele of newArr) {
if (ele.id === item.id) {
ele[property].push(item[property])
break
}
}
}
}
return newArr
}
const list = [
{ id: 1, name: 'A' },
{ id: 2, name: 'B' },
{ id: 1, name: 'C' },
{ id: 2, name: 'D' },
{ id: 2, name: 'E' }
]
console.log(mergePropertyById(list, 'name')) // [{id: 1, name: ['A', 'C']}, {id: 2, name: ['B', 'D', 'E']}]