1. 前言
随着 JavaScript 的不断发展,新增的特性和方法也不断涌现。ES8 (ECMAScript 2017) 是这个过程中的一个里程碑。在此次更新中,Array.prototype.includes() 方法是新添加的方法之一。今天,我们就来详细了解一下这个方法。
2. Array.prototype.includes() 方法
Array.prototype.includes() 方法用于判断一个数组是否包含一个指定的值,返回一个 boolean 类型的值。ES6 之前实现这个功能需要使用.indexOf(),但是它不能够正确处理NaN的判断,使用includes可以正确处理。它也更加容易理解和使用。包含一个元素的条件可以是一个基本类型值或通过一个比较函数做比较的值。下面是这个方法的语法:
array.includes(searchElement[, fromIndex])
参数:
searchElement
:要查找的元素fromIndex
:开始查找位置的索引。默认值为 0。
返回值:
布尔类型值,表示是否包含指定元素。
3.示例
下面是一个简单的例子,判断一个数组中是否包含一个特定元素:
let arr = [1, 2, 3, 4, 5]; console.log(arr.includes(3)); // Output: true console.log(arr.includes(6)); // Output: false
从这个例子中可以发现,这个方法可以正确地判断一个数组中是否包含一个指定的元素。
当然,除了单个元素,我们还可以判断是否包含一个数组:
let arr = [1, 2, [3, 4]]; console.log(arr.includes([3, 4])); // Output: false console.log(arr.includes(1)); // Output: true
上面的例子中,使用 includes() 方法判断数组中是否包含数组 [3, 4]
,返回值是 false
,因为 includes() 方法使用的是全等运算符(===),因此无法判断两个数组是否相等。
如果想要判断两个数组是否相等,需要使用其他方法,如深拷贝、排序后比较等。
在实际应用中,我们也可以使用参数 fromIndex 来设置查找的起点:
let arr = [1, 2, 3, 4, 5]; console.log(arr.includes(1, 1)); // Output: false console.log(arr.includes(2, 1)); // Output: true console.log(arr.includes(4, 4)); // Output: true
注意,fromIndex 参数设置为 0 表示从数组头部开始查找(默认)。
4. 总结
Array.prototype.includes() 方法是 ES8 中新增的方法之一,在判断一个数组中是否包含一个元素时非常有用。它比之前的 indexOf() 更加容易理解和使用,并且能够正确处理 NaN 的情况。在实际开发中,需要注意查找元素和起始位置的索引以及数组中包含数组的情况。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64d1ac82b5eee0b5258ebec5