ES6 Array.includes() 方法详解:替代 indexOf 的语义化查找

作者:半夏

时间:2026-10-22

浏览:636

本文介绍 ES6 新增的 Array.includes() 方法,旨在解决 ES5 indexOf 在语义化和 NaN 判断上的不足。includes() 直接返回布尔值,能准确识别数组中的 NaN 元素。同时支持通过第二个参数指定起始搜索位置,包括负数索引,从而提供更灵活且语义清晰的数组元素存在性检查方案。

文章目录

ES5 indexOf 的局限性

在 ES5 标准中,Array 对象已提供 indexOf 方法用于查找元素索引,若未找到则返回 -1。尽管该方法能定位元素,但在判断数组是否包含特定元素时存在两点局限:首先,通过返回 -1 或具体索引值来区分“存在”与“不存在”,语义表达不够直观;其次,indexOf 无法正确识别数组中的 NaN 元素,始终返回 -1。


const arr1 = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', NaN]
console.log('%s', arr1.indexOf(NaN))

示例输出:

-1

ES6 引入了 Array.includes() 方法,专门用于判断数组是否包含某个元素。该方法不仅解决了 indexOf 在语义化上的不足,还修正了对 NaN 的判断缺陷。与 indexOf 不同,includes() 直接返回布尔值 true 或 false,且能够正确识别并返回 true 当数组中包含 NaN 时。


const arr1 = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', NaN]
console.log('%s', arr1.includes('c'))
console.log('%s', arr1.includes('z'))
console.log('%s', arr1.includes(NaN))

ES6 includes() 方法特性

示例输出:

true false true

指定起始搜索位置

includes() 方法接受第二个可选参数,用于指定开始搜索的索引位置。


const arr1 = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', NaN]
console.log('%s', arr1.includes('d', 1))
console.log('%s', arr1.includes('d', 3))
console.log('%s', arr1.includes('d', 4))

示例输出:

true true false

第二个参数同样支持负数,表示从数组末尾向前计数的位置。需要注意的是,即使使用负数索引,搜索方向依然保持从左至右,不会因此改变。


console.log('%s', arr1.includes('k', -1))
console.log('%s', arr1.includes('k', -2))
console.log('%s', arr1.includes('i', -3))

示例输出:

false true false

总结

以上内容介绍了 ES6 中 Array.includes() 函数的具体用法。希望本文能帮助您更好地掌握该特性。如有任何疑问,欢迎留言交流,我们将及时回复。感谢支持!

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章