替换数组中的对象

2022-08-30 04:33:32

我有这个javascript对象:

var arr1 = [{id:'124',name:'qqq'}, 
           {id:'589',name:'www'}, 
           {id:'45',name:'eee'},
           {id:'567',name:'rrr'}]

var arr2 = [{id:'124',name:'ttt'}, 
           {id:'45',name:'yyy'}]

我需要将 arr1 中的对象替换为具有相同 id 的 arr2 中的项目。

所以这是我想得到的结果:

var arr1 = [{id:'124',name:'ttt'}, 
           {id:'589',name:'www'}, 
           {id:'45',name:'yyy'},
           {id:'567',name:'rrr'}]

我如何使用javascript实现它?


答案 1

您可以将 Array#mapArray#find 一起使用

arr1.map(obj => arr2.find(o => o.id === obj.id) || obj);

var arr1 = [{
    id: '124',
    name: 'qqq'
}, {
    id: '589',
    name: 'www'
}, {
    id: '45',
    name: 'eee'
}, {
    id: '567',
    name: 'rrr'
}];

var arr2 = [{
    id: '124',
    name: 'ttt'
}, {
    id: '45',
    name: 'yyy'
}];

var res = arr1.map(obj => arr2.find(o => o.id === obj.id) || obj);

console.log(res);

在这里,将返回元素,即对象,如果在 .如果不是,则相同的元素在即 返回。arr2.find(o => o.id === obj.id)arr2idarr2arr1obj


答案 2

有什么问题?Object.assign(target, source)

enter image description here

数组仍然是Javascript中的类型对象,因此只要找到匹配的键,使用赋值仍然应该重新分配由运算符解析的任何匹配键,对吗?