检查一个元素是否存在于对象数组中。

9
我有一个对象数组如下:

var memberships = [
  {
    id: 1,
    type: 'guest'
  },
  {
    id: 2,
    type: 'member'
  }
];

如何验证这样一个数组是否至少有一个类型为“成员”的元素?

请注意,该数组也可能没有任何元素。


6个回答

15

使用array.some()

var memberships = [{
    id: 1,
    type: 'guest'
  },
  {
    id: 2,
    type: 'member'
  }
];

var status = memberships.some(function(el) {
  return (el.type === 'member');
});

/*
  // Simplified format using arrow functions
  var status = memberships.some(el => el.type === 'member')
*/
console.log(status);

Array.some()

Array.some()会对数组的每个元素执行回调函数,直到找到回调函数返回真值的一个元素为止。如果找到这样的元素,则some()立即返回true。否则,some()返回false。


7
您可以使用Array#some方法: const memberExists = memberships.some(member => member.type ==='member'); 然后,if(memberExists)...

谢谢!非常有帮助。 - Sara Inés Calderón

1
你可以使用 Array#some

var memberships = [
  {
    id: 1,
    type: 'guest'
  },
  {
    id: 2,
    type: 'member'
  }
];

console.log(memberships.some(m=>m.type==='member'));


Array.prototype.some() 可能更快/更便宜,因为它不需要处理整个数组。 - David Thomas
@DavidThomas 这是真的。 - Weedoze

1
你还可以使用find方法,如果找到则返回第一个对象,否则返回undefined。
let a = memberships.find(o => o.type === 'member');

if (a) {
  ...do something
}

1
我认为这可能会有帮助。
let resultArray=memberships.filter(function(item) {
     return item["type"] === 'member';
});

结果数组保存了具有类型成员的对象的数据。

0
    var memberships = [
        {
            "Name": "family_name",
            "Value": "Krishna"
        },
        {
            "Name": "email",
            "Value": "harikrishnar88@gmail.com"
        }
    ];

    let resultArray=memberships.filter(function(item) {
      return item["Name"] === 'email';
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接