在 ES7 中,Array.prototype.includes 方法正式加入 JavaScript 的标准库,它解决了使用 indexOf 方法时遇到的一些烦恼。本文将详细介绍该方法的用法和注意事项,并带有示例代码,希望能帮助你更好地掌握它。
概述
Array.prototype.includes 方法用于判断某个数值是否在数组中,它与 indexOf 方法类似,但使用更加简单。其语法如下:
array.includes(valueToFind[, fromIndex])
其中,array
是需要检索的数组,valueToFind
是需要查找的数值,fromIndex
是开始检索的索引位置,默认值为 0。
该方法返回一个布尔值,表示该值是否在数组中存在。
示例代码
下面是一些使用示例:
const arr = [1, 2, 3, 4, 5]; arr.includes(3); // true arr.includes(6); // false arr.includes(2, 2); // false arr.includes(2, -2); // false
使用 includes 方法时,如果给定的值在数组中存在,返回值为 true
,否则返回值为 false
。其中,后两个示例的结果可能会让人感到困惑,它们的含义如下:
- 对于
arr.includes(2, 2)
,表示从索引 2 开始查找,2
在数组中的索引位置为 1,由于从索引 2 开始未找到2
,因此返回false
; - 对于
arr.includes(2, -2)
,表示从倒数第二个索引位置开始查找,因此并未找到2
,返回false
。
注意事项
在使用 includes 方法时需要注意以下几点:
参数类型
valueToFind
参数必须为基本类型或对象类型。如果valueToFind
参数是一个对象,那么在比较时会使用“严格相等”(即===
)进行比较。
fromIndex 参数
fromIndex
参数如果为负数,则表示从倒数第几个索引开始查找。例如,如果fromIndex
参数为-1
,那么从倒数第一个索引开始查找。如果fromIndex
参数的绝对值大于等于数组的长度,将不会进行检索。- 如果
fromIndex
参数为小数,则自动取整为整数。 - 如果
fromIndex
参数为 undefined,将从数组的头部开始检索。
indexOf 方法的问题
在 ES6 之前,判断数组中是否包含某个值需要使用 indexOf 方法,但该方法存在一些问题:
- indexOf 方法无法判断 NaN 是否在数组中存在;
- indexOf 方法无法判断两个对象是否相等(即便对象的值相等)。
因此,在这些情况下可以使用 includes 方法代替。
结论
ES7 中的 Array.prototype.includes 方法解决了在 JavaScript 中使用 indexOf 方法时存在的一些问题,使得数组的查找操作更加便捷,同时也降低了出错的风险。在实际开发中,应注意该方法使用的一些细节,并选择合适的场景使用它。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6753ab718bd460d3ada6ac70