我想我有一个非常简单的问题,但仍然没有找到解决方案。我有一个如下所示的数组:
var originalArray = [{
id: 1,
elements: [1, 2]
},
{
id: 1,
elements: [3, 4]
},
{
id: 5,
elements: ['a', 'b']
},
{
id: 5,
elements: ['c', 'd']
}, {
id: 27,
elements: []
}]
我想将其修改为如下所示(按 id 合并并加入元素):
newArray = [{
id: 1,
elements: [1, 2, 3, 4]
}, {
id: 5,
elements: ['a', 'b', 'c', 'd']
}, {
id: 27,
elements: []
}]
我已经进行了多次尝试,但仍然没有找到一种优雅的方式。
最佳答案
您可以创建一个以 ID 为键的对象并将具有相同 ID 的元素推送给它们,然后转换回数组。对于更大的数组,这比在每次迭代中循环更有效:
var originalArray = [{
id: 1,
elements: [1, 2]
},
{
id: 1,
elements: [3, 4]
},
{
id: 5,
elements: ['a', 'b']
},
{
id: 5,
elements: ['c', 'd']
}, {
id: 27,
elements: []
}];
const arrayHashmap = originalArray.reduce((obj, item) => {
obj[item.id] ? obj[item.id].elements.push(...item.elements) : (obj[item.id] = { ...item });
return obj;
}, {});
const mergedArray = Object.values(arrayHashmap);
console.log(mergedArray);
关于javascript - 合并数组中具有相同id的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58692417/