var arr1 = [{
id: '111',
name: 'aaa'
}, {
id: '222',
name: 'bbb'
}, {
id: '333',
name: 'ccc'
}, {
id: '444',
name: 'ddd'
}];
var arr2 = [{
id: '111',
name: 'xyz'
}, {
id: '333',
name: 'abc'
}];
我的要求:我需要用aar1
中具有相同ID但名称值不同的arr2
替换arr2
。
在结果以下,我应该进入arr1
var arr1 = [{
id: '111',
name: 'xyz'
}, {
id: '222',
name: 'bbb'
}, {
id: '333',
name: 'abc'
}, {
id: '444',
name: 'ddd'
}];
答案 0 :(得分:2)
您可以使用map来查找替换arr1中的arr2名称。 map函数遍历arr1的每个元素,find将同时匹配id和找到的匹配对象。如果找不到,我们将使用||返回arr1项目。运算符。
const result = arr1.map(item => arr2.find(item2 => item.id === item2.id) || item)
工作示例:
var arr1 = [{
id: '111',
name: 'aaa'
}, {
id: '222',
name: 'bbb'
}, {
id: '333',
name: 'ccc'
}, {
id: '444',
name: 'ddd'
}];
var arr2 = [{
id: '111',
name: 'xyz'
}, {
id: '333',
name: 'abc'
}];
const result = arr1.map(item => arr2.find(item2 => item.id === item2.id) || item)
console.log(result)
答案 1 :(得分:0)
这是我对问题的解释。 仅当在arr2中找到ID时才复制名称。
arr1.forEach(e1 => {
var e2 = arr2.find( e => e.id === e1.id );
if (e2) { e1.name = e2.name; }
});