我有这个代码:
const arr = [
{name:"Bill", age:11},
{name:"Bill", age:11}
]
console.log(arr.includes({name:"Bill", age:11}))Run Code Online (Sandbox Code Playgroud)
这里我想检查数组是否包含{name:"Bill", age:11}.
为什么我会假?以及如何使用包含进行此检查?
该includes()方法通过引用而不是通过值来比较对象。在您的情况下,这三个对象具有三个不同的引用,尽管它们具有相同的属性和相同的值。
const bill = { name: 'Bill', age: 11 }
const arr = [bill, { name: 'Jane', age: 18 }]
arr.includes(bill) // true (same reference)
arr.includes({ name: 'Bill', age: 11 }) // false (different reference)
Run Code Online (Sandbox Code Playgroud)
如果您想按值查找对象,可以使用该find()方法并传递一个过滤器函数,该函数检查对象的每个属性是否符合您的条件。
const arr = [{name:"Bill", age:11}, {name:"Jane", age:18}]
const exists = Boolean(arr.find(x => x.name === 'Bill' && x.age === 11))
// or even simpler using the `some()` method
const exists = arr.some(x => x.name === 'Bill' && x.age === 11)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16192 次 |
| 最近记录: |