js includes中判断对象
时间: 2023-05-04 13:02:38 浏览: 390
在JavaScript中,我们可以使用includes()方法来判断一个数组或字符串中是否包含了指定的元素或子串。如果包含,则返回true,否则返回false。但是,当我们要判断一个对象是否在数组中存在时,就需要关注对象的引用地址。
例如,我们定义一个数组和一个对象:
```
let arr = [{name: 'Alice'}, {name: 'Bob'}];
let obj = {name: 'Alice'};
```
如果我们要判断对象obj是否在数组arr中存在,我们不能直接使用includes方法,因为对象是引用类型,两个对象即使具有相同的属性和值,其引用地址也不同。这时,我们可以自己编写一个判断方法,如下:
```
function includesObject(arr, obj) {
for(let i = 0; i < arr.length; i++) {
if(JSON.stringify(arr[i]) === JSON.stringify(obj)) {
return true;
}
}
return false;
}
```
这个方法会遍历数组中的每一个元素,并将其转换成字符串格式,再比较其与目标对象obj的字符串格式是否相同。如果相同,则返回true,否则继续遍历。如果遍历结束后仍未找到相同的对象,则返回false。
小提示:使用JSON.stringify()方法将对象转换成字符串时,需要注意对象的属性顺序和特殊字符的转义,因为它们会影响字符串的比较。如果想避免这些问题,可以使用第三方库如deep-equal或lodash来比较对象是否相同。
阅读全文