检查数组是否有相同的元素,然后推送到第三个数组

时间:2016-09-26 14:19:24

标签: javascript arrays object

我有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])
    }
  }

这不起作用

3 个答案:

答案 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);
    }
});