我们说我有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/
通常情况下会有效,但有更清洁的方法吗?通过清洁我的意思是一种更好的方式,不会影响性能?任何帮助将不胜感激。
答案 0 :(得分:1)
if(array_1.find( e1 => array_2.find( e2 => e1.id == e2.id))) {
alert('found');
}
答案 1 :(得分:1)
您可以使用下划线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)
}
});
});