在前端开发中,数组是一个常用的数据类型,我们常常需要在数组中查找是否包含某个特定的元素。在 ES8 中,新增了一个方法 Array.prototype.includes()
,提供了一种方便的方式来检查数组中是否包含指定的值。该方法返回一个布尔值,指示数组中是否包含该元素。
Array.prototype.includes() 的语法
Array.prototype.includes()
方法的语法非常简单:
arr.includes(valueToFind[, fromIndex])
该方法接收两个参数,其中 valueToFind
是要查找的元素,fromIndex
是可选参数,表示从数组的哪个索引开始查找。如果 fromIndex
参数不传,默认值为 0。如果 fromIndex
是负数,则从数组结尾开始往前数。如果 fromIndex
大于或等于数组长度,则直接返回 false。
Array.prototype.includes() 的用法
下面来看一个例子,假设我们有一个数组 arr
,需要查找其中是否包含元素 x
:
const arr = [1, 2, 3, 4, 5]; const x = 3; const includesX = arr.includes(x); console.log(includesX); // true
上面的代码中,我们调用了 arr.includes(x)
方法,该方法返回 true,表示该数组中包含元素 x
。
我们也可以在指定的索引位置开始查找元素是否存在,比如下面的代码从数组第二个位置开始查找元素 x
:
const arr = [1, 2, 3, 4, 5]; const x = 3; const includesX = arr.includes(x, 1); console.log(includesX); // true
这次我们传入了第二个参数 1
,表示从数组的第二个索引位置开始查找。因为数组中的索引是从 0 开始的,所以第二个位置是索引 1,对应的元素是 2。但是我们希望从第二个元素的位置开始往后查找,因此需要传入 1。
接下来,我们来看一个查找字符串中是否包含某个子串的例子:
const str = 'hello,world'; const substr = 'world'; const includesSubstr = str.includes(substr); console.log(includesSubstr); // true
上面的代码中,我们首先定义了一个字符串 str
,然后使用 str.includes(substr)
方法查找其中是否包含子串 substr
。该方法返回 true,表示字符串中包含该子串。
注意事项
在使用 Array.prototype.includes()
方法时,需要注意以下几点:
- 该方法会从数组的第一个元素开始查找,直到找到指定的元素或者到达数组末尾。
Array.prototype.includes()
方法使用严格相等运算符,即===
,来比较元素是否相等。Array.prototype.includes()
方法对于 NaN 和 undefined 的处理与相等运算符===
的处理方式相同,即:NaN !== NaN
,但是undefined === undefined
。
总结
使用 Array.prototype.includes()
方法可以方便地检查数组中是否包含指定的值,避免了遍历整个数组的操作。该方法很灵活,可以指定从数组的哪个位置开始查找,也可以用于查找字符串中的子串。在使用时,需要注意该方法使用严格相等运算符来比较元素是否相等。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64a917d548841e9894564d91