搜索对象从对象数组的数组 - 使用Javascript
我有对象的两个数组:搜索对象从对象数组的数组 - 使用Javascript
var objArray1 = [{'name':'abc', 'phone':'0333'},
{'name':'xyz', 'phone':'0334'},
{'name':'fgfh', 'phone':'0999'},
{'name':'abc', 'phone':'0666'},
{'name':'abc', 'phone':'0444'}
]
var objArray2 = [{'name':'abc', 'mobile':'0333'},
{'name':'xyz', 'mobile':'0334'},
{'name':'fgfh', 'mobile':'0999'}
]
我想从objArray2
搜索索引的objArray1
电话。
如果比赛我想,对象的objArray1
在existing
阵列被推动,如果没有匹配,则推该对象在joiners
阵列。
这是我想要做的。
objArray1.forEach(function(item){
if (objArray2.indexOf(item.phone) < 0) {
joiners.push(item)
}else{
existing.push(item)
}
})
上面的代码是不工作,并把的objArray1
的所有对象加入者。
当前结果:
joiners = [{'name':'abc', 'phone':'0333'},
{'name':'xyz', 'phone':'0334'},
{'name':'fgfh', 'phone':'0999'},
{'name':'abc', 'phone':'0666'},
{'name':'abc', 'phone':'0444'}
]
通缉的结果:
joiners = [{'name':'abc', 'phone':'0666'},
{'name':'abc', 'phone':'0444'}
]
之后,我要检查反之亦然,使毕业生的数组,如果any object of objArray2
不objArray1
存在。
您可以使用Array#some函数检查是否存在。如果条件满足,则返回true
,否则返回false
。 indexOf
正在通过比较参考进行检查,因为您有不同的对象,因此您将在if
语句中始终获得false
。
我在forEach
功能
const objArray1 = [
{'name':'abc', 'phone':'0333'},
{'name':'xyz', 'phone':'0334'},
{'name':'fgfh', 'phone':'0999'},
{'name':'abc', 'phone':'0666'},
{'name':'abc', 'phone':'0444'}];
const objArray2 = [
{'name':'abc', 'mobile':'0333'},
{'name':'xyz', 'mobile':'0334'},
{'name':'fgfh', 'mobile':'0999'}];
const joiners = [];
const existing = [];
objArray1.forEach(item =>
objArray2.some(i => i.mobile === item.phone) ?
joiners.push(item) : existing.push(item));
console.log(joiners);
console.log(existing);
你知道我要说什么。 – Cerbrus
在条件下做了小小的调整。根据我的需要。 –
改了一下代码你可以采取一个哈希表,并以此为条件推动。
var objArray1 = [{ name: 'abc', phone: '0333' }, { name: 'xyz', phone: '0334' }, { name: 'fgfh', phone: '0999' }, { name: 'abc', phone: '0666' }, { name: 'abc', phone: '0444' }],
objArray2 = [{ name: 'abc', mobile: '0333' }, { name: 'xyz', mobile: '0334' }, { name: 'fgfh', mobile: '0999' }],
joiners = [],
existing = [],
hash = Object.create(null);
objArray2.forEach(function (item) { hash[item.mobile] = true; });
objArray1.forEach(function(item) {
(hash[item.phone] ? existing : joiners).push(item);
});
console.log(joiners);
console.log(existing);
.as-console-wrapper { max-height: 100% !important; top: 0; }
你知道我要说什么。 – Cerbrus
请加通缉的结果也是如此。 –