javascript - 替换数组中的对象

标签 javascript lodash

我有这个 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 来自 的项目arr2 编号 .

所以这是我想要得到的结果:
var arr1 = [{id:'124',name:'ttt'}, 
           {id:'589',name:'www'}, 
           {id:'45',name:'yyy'},
           {id:'567',name:'rrr'}]

如何使用 javascript 实现它?

最佳答案

您可以使用 Array#map Array#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)将返回元素,即来自 arr2 的对象如果 id可在 arr2 中找到.如果不是,那么 arr1 中的相同元素即obj被退回。

关于javascript - 替换数组中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37585309/

相关文章:

javascript - 当我需要同时过滤多个内容时,如何调用一次过滤器?

javascript - JSON-如何从json字符串中获取单个内容

javascript - 如何使用 javascript 清除/重置 formData()?

javascript - React Yup 验证两个字段的长度之和

javascript - 根据对象中另一个键的值获取键值

javascript - 使用 Lodash 在另一个字符串中使用 AND 搜索字符串数组

node.js - lodash过滤嵌套json

javascript - 仅在内容更新时自动刷新网页

javascript - 从 ExtJS 6.6 href 链接运行 Controller 功能

javascript - Lodash orderBy 函数如何处理重音字符?