对象数组:对于数组1中的每个元素,对象值是否作为数组2中任何对象中的值存在

时间:2014-08-22 04:05:15

标签: javascript arrays object

我有两个数组,在数组的每个元素中都包含对象。

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属性关联的值。

2 个答案:

答案 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);
         }
    });