简体   繁体   English

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

[英]Check if one element exists in an array of objects

I have the following array of objects:我有以下对象数组:

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

How can I verify if such an array has at least one element with type 'member'?如何验证这样的数组是否至少有一个类型为“成员”的元素?

Note that the array can also have no elements.请注意,数组也可以没有元素。

Use array.some()使用array.some()

 var memberships = [{ id: 1, type: 'guest' }, { id: 2, type: 'member' } ]; var status = memberships.some(function(el) { return (el.type == 'member'); }); console.log(status);

Array.some()数组.some()

Array.some() executes the callback function once for each element present in the array until it finds one where callback returns a truthy value. Array.some()对数组中存在的每个元素执行一次回调函数,直到找到一个回调函数返回真值的元素。 If such an element is found, some() immediately returns true.如果找到这样的元素,some() 立即返回 true。 Otherwise, some() returns false.否则,some() 返回 false。

You can use Array#some method:您可以使用Array#some方法:

const memberExists = memberships.some(member => member.type === 'member');

Then, if(memberExists) ...然后, if(memberExists) ...

You can use Array#some你可以使用Array#some

 var memberships = [ { id: 1, type: 'guest' }, { id: 2, type: 'member' } ]; console.log(memberships.some(m=>m.type==='member'));

You can also use find, which returns the first object if found else undefined.您还可以使用 find,如果找到其他未定义的对象,它会返回第一个对象。

let a = memberships.find(o => o.type === 'member');

if (a) {
  ...do something
}

I think this may help我认为这可能会有所帮助

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

the result array holds the data of the objects that has type member结果数组保存具有成员类型的对象的数据

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

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM