我有2个对象数组。
让我们说:
arr1 = [object, object, object];
和
arr2 = [object, object, object];
如何迭代它们并检查相同的对象属性值,然后推入第三个数组。 我试过这个:
for(var i = 0; i < arr1.length; i++){
for(var j = 0; j < arr2.length; j++){
if (arr1[i].id == arr2[j].id){
arr3.push(arr1[i])
}
}
这不起作用
答案 0 :(得分:3)
你错过了if语句中的结束花括号,除此之外它还有效:
for(var i = 0; i < arr1.length; i++){
for(var j = 0; j < arr2.length; j++){
if (arr1[i].id == arr2[j].id){
arr3.push(arr1[i])
}
}
}
答案 1 :(得分:1)
如果您不介意使用第三方库,.. lodash有一个功能可以为您完成。
例如
var arr3 = _.intersectionWith(arr1,arr2,function (a,b) { return a.id === b.id })
答案 2 :(得分:1)
如果只需要1(甚至没有),为什么要嵌套循环?
arr1.forEach(object => {
if (arr2.indexOf(object) !== -1) {
arr3.push(object);
}
});