在 ES6 中,JavaScript 引入了一些新的数组方法,如 Array.prototype.find()
和 Array.prototype.findIndex()
。而在 ES7 中,又新增了一个 Array.prototype.includes()
方法,它可以用来判断一个数组是否包含某个元素。在 ES10 中,该方法得到了进一步的扩展和优化,本文将详细介绍该方法的使用技巧。
基本用法
Array.prototype.includes()
方法用于判断一个数组是否包含某个元素,其基本语法如下:
arr.includes(searchElement[, fromIndex])
其中,searchElement
表示要查找的元素,fromIndex
表示从哪个位置开始查找(可选)。如果数组中存在该元素,则返回 true
;否则返回 false
。
下面是一个简单的示例:
const arr = [1, 2, 3]; console.log(arr.includes(2)); // true console.log(arr.includes(4)); // false
fromIndex 参数的使用
fromIndex
参数用于指定查找的起始位置。如果省略该参数,则从数组的第一个元素开始查找。如果指定了该参数,则从指定位置开始查找。
需要注意的是,如果 fromIndex
参数为负数,则表示倒数第几个元素。例如,fromIndex
为 -1
表示从倒数第一个元素开始查找。
下面是一些示例:
const arr = [1, 2, 3, 2, 1]; console.log(arr.includes(2, 2)); // true,从索引 2 开始查找 console.log(arr.includes(1, -2)); // false,从倒数第二个元素开始查找 console.log(arr.includes(1, -4)); // true,从倒数第四个元素开始查找
NaN 的处理
Array.prototype.includes()
方法可以正确处理 NaN
值。也就是说,如果数组中包含 NaN
,则返回 true
。
const arr = [1, NaN, 3]; console.log(arr.includes(NaN)); // true
需要注意的是,该方法无法区分 -0
和 +0
,它们被视为相等的值。
与 indexOf() 方法的区别
Array.prototype.includes()
方法与 Array.prototype.indexOf()
方法的区别在于,前者可以正确判断数组中是否包含 NaN
,而后者无法正确处理 NaN
。
此外,includes()
方法更加简洁易读,并且不需要进行严格相等的比较,因此代码更加清晰。
下面是一个示例,比较了两种方法的使用:
const arr = [1, NaN, 2]; console.log(arr.includes(NaN)); // true console.log(arr.indexOf(NaN)); // -1
总结
Array.prototype.includes()
方法是 ES7 中新增的数组方法,用于判断一个数组是否包含某个元素。在 ES10 中,该方法得到了进一步的扩展和优化。使用该方法可以更加简洁易读地判断数组中是否包含某个元素,同时可以正确处理 NaN
值。需要注意的是,该方法无法区分 -0
和 +0
。
希望本文能够帮助读者更好地理解和使用 Array.prototype.includes()
方法。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65dc89081886fbafa49eda38