我有两个对象数组:
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'}
]
之后我想检查反之亦然并制作一组离开者 if 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);
关于javascript - 从对象数组中搜索对象数组 - Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46725324/