如何检查对象数组是否包含字符串

Gab*_*ssi 1 javascript ecmascript-6

假设我有一个对象数组:

let arr = [
   {
    name: 'Jack',
    id: 1
   },
   {
    name: 'Gabriel',
    id: 2
   },
   {
    name: 'John',
    id: 3
   }
]
Run Code Online (Sandbox Code Playgroud)

我需要检查该数组是否包含名称“Jack”,例如使用:

if (arr.includes('Jack')) {
   // don't add name to arr

} else {
  // push name into the arr

}
Run Code Online (Sandbox Code Playgroud)

但是 arr.includes('Jack') 返回 false,如何检查对象数组是否包含名称?

Mam*_*mun 7

由于您需要检查数组中的对象属性值,您可以尝试使用Array?.prototype?.some()

some()方法测试数组中是否至少有一个元素通过了提供的函数实现的测试。它返回一个布尔值。

let arr = [
   {
    name: 'Jack',
    id: 1
   },
   {
    name: 'Gabriel',
    id: 2
   },
   {
    name: 'John',
    id: 3
   }
]
var r = arr.some(i => i.name.includes('Jack'));
console.log(r);
Run Code Online (Sandbox Code Playgroud)