js两个数组对象对比 id相同的覆盖 不相同的添加
时间: 2024-12-30 13:40:13 浏览: 19
在JavaScript中,你可以通过结合`filter()`、`findIndex()`以及基本的对象操作来实现这样的功能,通常这被称为数组的合并(merge)并更新重复项。假设我们有两个数组`array1`和`array2`都是包含对象的数组,每个对象都有一个`id`属性:
```javascript
let array1 = [
{ id: '1', name: 'A' },
{ id: '2', name: 'B' },
// 其他对象...
];
let array2 = [
{ id: '1', age: 25 }, // '1' 的 id 对象有新属性 age
{ id: '3', name: 'C' },
// 其他对象...
];
```
为了达到你所说的“ID相同的覆盖不相同的添加”,可以编写如下函数:
```javascript
function mergeAndOverride(array1, array2) {
return array1.map(item1 => {
let item2 = array2.find(item2 => item2.id === item1.id);
if (item2) {
// 如果找到匹配的id,返回新的对象,覆盖原有对象
return { ...item1, ...item2 };
} else {
// 没找到匹配,直接保留原对象
return item1;
}
})
.concat(array2.filter(item2 => !array1.some(item1 => item1.id === item2.id))); // 添加剩余未在 array1 中找到的 item2
}
// 示例结果
let result = mergeAndOverride(array1, array2);
```
阅读全文