比方说,我有我想要比较对象的两个数组:ES6特定方法循环两个数组并在每个数组中找到匹配项?
var arr1 = [
{
name: 'A', type: "Dog"
},
{
name: 'B', type: "Zebra"
},
{
name: 'C', type: "Cat"
},
{
name: 'D', type: "Dingo"
}
]
var arr2 = [
{
name: 'A', type: "Wolf"
},
{
name: 'B', type: "Echidna"
},
{
name: 'C', type: "Wallaby"
},
{
name: 'D', type: "Rabbit"
}
]
假装arr1
是旧数据,并arr2
更新数据从一个API来。
我想循环遍历数组,找到name
匹配的对象。如果有匹配,我想将type
从arr1
更新为arr2
。如果在ECMAScript中6任何更新的方式使这个容易做到(在真实的场景中的逻辑是一个很大的
for(var i = 0; i<arr1.length; i++){
for(var x = 0; x<arr2.length; x++){
if(arr1[i].name === arr2[x].name){
arr1[i].type = arr2[x].type;
}
}
}
我想知道:
我会做到这一点,像这样在循环内复杂和循环感觉相当笨拙);
['Array.prototype.find'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find)或'findIndex' – zerkms
所有对象是否都有不同的名字? – Oriol
@Oriol是的,'name'是一个唯一的标识符。有时'arr2'会引入不在'arr1'中的名字,这将需要插入。 – Jascination