JavaScript ES2016 引入了一个新方法 Array.prototype.includes()
,用于检查一个数组是否包含一个指定元素。在此之前,我们经常使用 indexOf()
方法来判断元素是否存在于数组中。但是,includes()
方法更加简单直观,并且可以使用严格相等运算符来比较元素。
语法
Array.prototype.includes()
方法的语法如下:
arr.includes(searchElement[, fromIndex])
其中,searchElement
是要查找的元素,fromIndex
是可选参数,指定了搜索开始的位置。
示例
下面是一个使用 includes()
方法的例子:
const arr = [1, 2, 3]; console.log(arr.includes(2)); // 输出:true console.log(arr.includes(4)); // 输出:false
与 indexOf()
不同的是,includes()
方法可以正确处理 NaN 值和数组中包含 undefined 的情况:
const arr1 = [NaN, 1, undefined]; console.log(arr1.includes(NaN)); // 输出:true console.log(arr1.includes(undefined)); // 输出:true console.log(arr1.includes(null)); // 输出:false
深入探讨
includes()
方法是基于严格相等运算符(===)进行匹配的。这意味着,它在比较时不会进行类型转换,也不会将空值与 undefined 进行相等性比较。下面是一些示例:
console.log([1, 2, 3].includes(1)); // 输出:true console.log([1, 2, 3].includes('1')); // 输出:false,因为在比较时不会进行类型转换 console.log([1, 2, 3].includes(undefined)); // 输出:false,因为在比较时 undefined 并不等于空值 console.log([1, null, 3].includes(null)); // 输出:true
includes()
方法的第二个参数指定了搜索开始的位置。如果省略该参数,则默认从数组的首个元素开始查找。如果指定的 fromIndex
值小于 0,则将其视为从末尾开始的偏移量:
console.log([1, 2, 3].includes(1, 1)); // 输出:false,因为从第二个元素开始查找,找不到 1 console.log([1, 2, 3].includes(3, -1)); // 输出:true,因为从最后一个元素开始查找,找到了 3
总结
Array.prototype.includes()
方法是 JavaScript ES2016 新增的一个有用方法,它可以更容易地检查一个数组是否包含一个特定的元素。可以使用该方法替换原来的 indexOf()
方法,使代码更加简洁易懂。但需要注意,在比较时,includes()
方法使用严格相等运算符,并不会进行类型转换和空值与 undefined 的相等性比较。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6517871495b1f8cacdfb5706