如果你想在合并两个数组对象的同时,将两个数组中相同 id 的对象合并成一个,则可以按照以下步骤进行实现:
- 使用
Array.prototype.concat()
方法将两个数组连接在一起; - 使用
Array.prototype.reduce()
方法将所有对象合并成一个,对相同 id 的对象进行合并; - 返回合并后的对象数组。
下面是一个示例代码:
const array1 = [{ id: 1, name: 'Alice' }, { id: 2, name: 'Bob' }, { id: 3, name: 'Charlie' }];
const array2 = [{ id: 2, age: 20 }, { id: 3, age: 21 }, { id: 4, age: 22 }];
const mergedArray = array1.concat(array2)
.reduce((accumulator, currentObj) => {
const existingObj = accumulator.find(obj => obj.id === currentObj.id);
if (existingObj) {
Object.assign(existingObj, currentObj);
} else {
accumulator.push(currentObj);
}
return accumulator;
}, []);
console.log(mergedArray);
在上面的代码中,我们首先使用 concat()
方法将 array1
和 array2
连接在一起,形成一个新的数组 mergedArray
。然后,我们使用 reduce()
方法对 mergedArray
进行遍历,并判断当前对象的 id
是否已经在累加器中存在。
如果存在,则获取已经存在的对象并使用 Object.assign()
方法将当前对象合并到已经存在的对象中;如果不存在,则将当前对象添加到累加器中。
最后,我们得到了一个合并了两个数组对象并合并相同项的新数组 mergedArray
。
输出结果:
[
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob', age: 20 },
{ id: 3, name: 'Charlie', age: 21 },
{ id: 4, age: 22 }
]