繁体   English   中英

如何在 JavaScript 的 2 个对象数组中检查相等的属性值?

[英]How to check for equal property values in 2 Array of Objects in JavaScript?

假设我有 2 个数组:

const array_1 = [ { id: 1, sex: 'M' }, { id: 2, sex: 'F' }, { id: 3, sex: 'M' } ]
const array_2 = [ { id: 12, age:1 }, { id: 22, age: 4 }, { id: 3, age: 2 } ]

我想检查array_1中是否有也在array_2 我可以做这样的事情:

array_1.forEach((el_1) => {
  array_2.forEach((el_2, i) => {
    if(el_1.id === el_2.id) alert(i);
  })
})

或者使用 ECMAScript 2015 findIndex 方法:

array_1.forEach((el_1) => {
  const i = array_2.findIndex(x => x.id === el_1.id)
  if(i >= 0) alert(i);
})

如果要检查输出: https : //jsfiddle.net/v7bjnpa7/1/

通常这会起作用,但是有没有更干净的方法来做到这一点? 干净是指一种不会影响性能的更好方法? 任何帮助将非常感激。

if(array_1.find( e1 => array_2.find( e2 => e1.id == e2.id))) {
    alert('found');
}

您可以使用Underscore js [ http://underscorejs.org/][1]

在那里你将有方法来比较、交集等等。

尝试一下

或者

const array_1 = [ { id: 1, sex: 'M' }, { id: 2, sex: 'F' }, { id: 3, sex: 'M' } ];
const array_2 = [ { id: 12, age:1 }, { id: 22, age: 4 }, { id: 3, age: 2 } ];

array_1.forEach(function(item)
{

    array_2.forEach(function (item2) {

        if(item.id==item2.id)
        {
            console.log(item,item2)
        }
    });


});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM