在 ES7 中,新增了一个 Array.prototype.includes() 方法,用于判断某个元素是否存在于数组中。这个方法与之前的 indexOf 方法略有不同,主要体现在以下几个方面:
返回值为布尔类型,而 indexOf 方法返回的是元素在数组中的索引。
includes 方法可以判断 NaN,而 indexOf 方法不能。
includes 方法可以判断同一个引用对象在数组中的位置,而 indexOf 方法不行。
语法
Array.prototype.includes(searchElement[, fromIndex])
searchElement: 要查找的元素
fromIndex (可选): 开始查找的位置,默认值为 0
返回值
返回布尔类型,表示数组中是否包含指定的元素。
示例代码
const arr = [1, 2, NaN, {name: 'Tom'}, {name: 'Jerry'}]; console.log(arr.includes(1)); // true console.log(arr.includes(NaN)); // true console.log(arr.includes({name: 'Tom'})); // true,指向同一个引用对象 console.log(arr.includes({name: 'Jerry'})); // false,不指向同一个引用对象 console.log(arr.includes(3)); // false console.log(arr.includes(2, 2)); // false,从第二个元素开始查找
应用场景
- 判断元素是否存在于数组中
在之前,我们通常使用 indexOf 方法来判断数组中是否包含某个元素,indexOf 方法的返回值为元素在数组中的索引,但如果要判断其中是否包含 NaN,就会出现问题,因为在数组中,NaN 和 NaN 是不相等的。而 includes 方法却可以用来判断 NaN。
- 判断同一个引用对象是否存在于数组中
在开发中,我们有时需要判断一个对象是否存在于数组中,而不是对象的某个属性是否在数组中,要判断这个对象,通常的方法是遍历数组,判断是否存在一个与该对象引用相同的元素。但使用 includes 方法后,可以直接判断元素是否存在于数组中,而且 includes 方法可以判断同一个引用对象是否存在于数组中。
总结
ES7 中新增的 Array.prototype.includes() 方法,可以方便地判断数组中是否包含某个元素,特别是在判断数组中是否包含 NaN 以及同一个引用对象是否存在于数组中时,更加方便。但是,需要注意的是,includes 方法无法判断对象的属性是否存在于数组中,只能判断对象本身是否存在于数组中。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64a1162648841e9894d5b502