我有两个对象数组:
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'}
]
我想从objArray1
搜索objArray2
的索引电话。
如果匹配,我希望将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
,我想检查反之亦然并制作一系列离职者。
答案 0 :(得分:1)
您可以使用Array#some功能检查存在。如果条件满足,则返回true
,否则false
。 indexOf
通过比较引用进行检查,因为您有不同的对象,您将始终在false
语句中获得if
。
我更改了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);
&#13;
答案 1 :(得分:0)
您可以使用哈希表并将其用作推送条件。
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; }