在数组中查找具有特定值的对象

Man*_*nsa 1 javascript arrays object

我有一个这样的对象数组

"users": [
   {
     "type": "User",
     "userId": "5b774905c2b2ac0f33ac4cc7",
     "name": "Mike"
   },
   {
     "type": "User",
     "userId": "5b77490f3084460f2986bd25",
     "name": "Pater"
   }
]
Run Code Online (Sandbox Code Playgroud)

现在,我想检查数组是否包含名称为“ Mike”的对象。

我该如何在javascript中进行此操作?

我在想这样的事情,但不确定如何:

if ( "Mike" in users ) {
   // Do something...
}
Run Code Online (Sandbox Code Playgroud)

希望对此有所帮助,并在此先感谢;-)

Com*_*ide 6

有多种实现方法,例如,这里有四种ES6方法:

  1. some()将返回truefalse,具体取决于条件。它测试,列出条件是否符合条件
  2. find()如果条件的计算结果为true,并且条件的计算结果为,undefined则它将返回一个项目本身(第一个匹配的项目)false
  3. findIndex()将返回的项目(第一个匹配的索引)的索引,如果条件计算到true,并且-1如果它的计算结果为false
  4. filter() 将创建一个符合条件的所有项目的新数组(否则将返回一个空数组)

const users = [
   {
     "type": "User",
     "userId": "5b774905c2b2ac0f33ac4cc7",
     "name": "Mike"
   },
   {
     "type": "User",
     "userId": "5b77490f3084460f2986bd25",
     "name": "Pater"
   }
];

const someObject = users.some(item => item.name === 'Mike');
const targetObject = users.find(item => item.name === 'Mike');
const targetIndex = users.findIndex(item => item.name === 'Mike');
const filteredObjects = users.filter(item => item.name === 'Mike');

console.log('someObject:', someObject)
console.log('targetObject:', targetObject)
console.log('targetIndex:', targetIndex)
console.log('filteredObjects:', filteredObjects)
Run Code Online (Sandbox Code Playgroud)

  • 这应该是最好的答案。 (2认同)