Javascript 检查数组中的相同元素,然后推送到第三个数组

Javascript 检查数组中的相同元素,然后推送到第三个数组,javascript,arrays,object,Javascript,Arrays,Object,我有两个对象数组 比如说: arr1 = [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]) }

我有两个对象数组

比如说:

arr1 = [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])
    }
  }
for(变量i=0;i

但是,这不起作用,除非它起作用,否则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])
        }
    }
}
for(变量i=0;i
您的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])
        }
    }
}
for(变量i=0;i
如果您不介意使用第三方LIB,…lodash有一个功能可以帮您完成

例如


如果您不介意使用第三方LIB,…lodash有一个功能可以帮您完成

例如


如果只需要1个循环(甚至不需要),为什么要嵌套循环


如果只需要1个循环(甚至不需要),为什么要嵌套循环


哪一部分不起作用?你有控制台错误吗?我觉得这很合理。你有什么输出?你确定你有任何匹配的对象具有相同的
id
?两个数组中的对象的顺序是否相同?@MB没有,这是个问题吗?实际上,这不是因为你在检查每个可能的组合使用双循环提供一个。包括示例输入和预期结果。这其中的哪部分不起作用?你有控制台错误吗?我觉得这很合理。你有什么输出?你确定你确实有任何匹配的对象具有相同的
id
?两个数组中的对象的顺序是否相同?@MB不,不是,是吗这是一个问题吗?事实上,这不是因为你正在检查每一个可能与双循环的组合。包括示例输入和预期结果。我认为这是一个输入错误,否则我会有语法错误。好吧,我运行你的代码,它对我有效,如果它不与固定分号一起工作,那么问题可能与你的对象中的数据我认为这是一个输入错误,否则我会有语法错误。好吧,我运行你的代码,它对我有效。如果它不使用固定分号,那么问题可能与你的对象中的数据有关
var arr3 = _.intersectionWith(arr1,arr2,function (a,b) { return a.id === b.id })
arr1.forEach(object => {
    if (arr2.indexOf(object) !== -1) {
        arr3.push(object);
    }
});