如何在javascript中将一个数组的现有数组对象替换为另一个数组

如何在javascript中将一个数组的现有数组对象替换为另一个数组,javascript,Javascript,我的要求:我需要用arr2中id相同但名称值不同的arr2替换aar1 下面是我应该在arr1中得到的结果 var arr1 = [{ id: '111', name: 'aaa' }, { id: '222', name: 'bbb' }, { id: '333', name: 'ccc' }, { id: '444', name: 'ddd' }]; var arr2 = [{ id: '111', name

我的要求:我需要用arr2中id相同但名称值不同的arr2替换aar1

下面是我应该在arr1中得到的结果

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'
}];

您可以使用map和find替换arr1中的arr2名称。 map函数遍历arr1的每个元素,find将匹配id并返回匹配的对象(如果找到)。如果找不到,我们将使用| |运算符返回arr1项

var arr1 = [{
    id: '111',
    name: 'xyz'
}, {
    id: '222',
    name: 'bbb'
}, {
    id: '333',
    name: 'abc'
}, {
    id: '444',
    name: 'ddd'
}];
工作示例:

变量arr1=[{ id:'111', 名称:“aaa” }, { id:'222', 名称:“bbb” }, { id:'333', 名称:“ccc” }, { id:'444', 名称:“ddd” }]; var arr2=[{ id:'111', 名称:“xyz” }, { id:'333', 姓名:“abc” }]; const result=arr1.mapitem=>arr2.finditem2=>item.id==item2.id | item
console.logresult这是我对问题的解释。 仅当在arr2中找到id时才复制名称

const result = arr1.map(item =>  arr2.find(item2 => item.id === item2.id) || item)

@str的可能副本不要将此任务标记为可能的副本。我问这个问题是为了满足我的要求。前面的问题是针对不同的要求,有什么不同?即使你得到的答案与副本中的答案完全相同。你应该解释地图、查找和| | |正在做什么
arr1.forEach(e1 => {
    var e2 = arr2.find( e => e.id === e1.id );
    if (e2) { e1.name = e2.name; }
});