javascript - 操作对象数组中的对象

标签 javascript jquery 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'}

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

这是我如何达到预期结果的:

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

结果如下:

var arr1 = [{id:'124',name:'ttt'}, 
           {id:'589',name:'em'}, 
           {id:'45',name:'yyy'},
           {id:'567',name:'eme'}];

但是这个解决方案的问题是:

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

不适用于 IE 浏览器。

如何更改上面的行以在 IE 和 Chrome 浏览器中获得所需的结果?

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);

最佳答案

如果您想使用Array.prototype.find(),您需要为不支持它的浏览器使用推荐的polyfill。

参见MDN Array.protoype.find() polyfill

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

相关文章:

javascript - 是否有一个明确的解决方案可以使用 jQuery 来验证 URL 而无需插件?

jquery - jplayer和jquery,添加一个函数

javascript - lodash/下划线查找数组中非唯一元素的数量

javascript - Lodash 中 curry 和 curryRight 的区别

javascript - 理解 Javascript 中的双括号运算符

javascript - 迭代表的行

jquery - 切换类不起作用?

jquery - 如何使用jquery替换json结果中的逗号?

javascript - 在javascript中合并两个数组,如果id相同,则使用lodash选择第二个数组上的一个

javascript - Angular - ng-disabled 在范围更改后不起作用