我有两个数组,在数组的每个元素中都包含对象。
var array1 = [{firstName: "John", lastName: "McDonald"},
{firstName: "Sandy", lastName: "Johnson"},
....,];
var array2 = [{userName: "Donald"}, {userName: "John"},....,];
在伪代码中,我想执行以下操作:
for each element in array1
if (array1[i] == any userName in array2)
...
简单来说,我想查看array1中的每个firstname,看看它是否存在于array2中作为与userName属性关联的值。
答案 0 :(得分:2)
我不知道这正是你想要的,但你会知道如何做到这一点。
var userExists = array1.map(function(person){
return array2.some(function(user){
return user.userName===person.firstName
})
})
console.log(userExists);
此处userExists
将是一个包含布尔值的数组,如果array1
中的元素的第一个名称与array2
中的任何用户名匹配,那么true
将使用false
{1}}。
注意: - map
& IE8不支持some
个函数。
答案 1 :(得分:0)
您可以这样做:
array1.foreach(x => {
if (array2.filter(y => y.username === x.firstName || y.username === x.lastName).length >0){
console.log(y.username);
}
});