有了Array.prototype.includes你可以做这样的事情:
let array1 = [1, 2, 3];
console.log(array1.includes(2)); // return true
Run Code Online (Sandbox Code Playgroud)
我的问题是:你可以使用includes一个对象数组,你想要找到的地方,比如"name"="Jane"?以下面的数据为例:
let array2 = [{"name" : "John", age: 24}, {"name" : "Jane", age: 36}]
这是你可以用这个includes方法做的事情- 它会是什么样子?
您可以使用它,但前提是您有对象的引用(而不是它的结构等价物).
const o1 = { name: '1' }
const o2 = { name: '2' }
const arr = [o1, o2]
arr.includes(o1) // true
arr.includes({ name: '1' }) // false
Run Code Online (Sandbox Code Playgroud)
这是因为根据规范includes使用"SameValueZero"算法(强调我的):
includes使用SameValueZero算法searchElement按升序与数组元素进行比较,如果在任何位置找到,则返回; 否则,退回.truefalse
对于不同的引用," SameValueZero "将始终返回false,因此将返回上述代码的第二次尝试false.
您可以使用Array#some,它允许您指定lambda作为参数.然后,您甚至可以为对象编写自定义相等逻辑.
arr.some(o => o.name == '1') // true
Run Code Online (Sandbox Code Playgroud)
从您的评论中,我发现您对检查多个值感兴趣.在这种情况下,您可以简单地使用||运算符some:
arr.some(o => o.name == '1' || o.name == '2' || o.name == '3')
Run Code Online (Sandbox Code Playgroud)
如果您不希望像这样指定所有这些,您可以执行以下操作.
arr.some(o => ['1', '2', '3'].includes(o.name))
Run Code Online (Sandbox Code Playgroud)