ES7 Array.prototype.includes 方法详解及注意事项,告别 indexOf 带来的烦恼

阅读时长 3 分钟读完

在 ES7 中,Array.prototype.includes 方法正式加入 JavaScript 的标准库,它解决了使用 indexOf 方法时遇到的一些烦恼。本文将详细介绍该方法的用法和注意事项,并带有示例代码,希望能帮助你更好地掌握它。

概述

Array.prototype.includes 方法用于判断某个数值是否在数组中,它与 indexOf 方法类似,但使用更加简单。其语法如下:

其中,array 是需要检索的数组,valueToFind 是需要查找的数值,fromIndex 是开始检索的索引位置,默认值为 0。

该方法返回一个布尔值,表示该值是否在数组中存在。

示例代码

下面是一些使用示例:

使用 includes 方法时,如果给定的值在数组中存在,返回值为 true,否则返回值为 false。其中,后两个示例的结果可能会让人感到困惑,它们的含义如下:

  • 对于 arr.includes(2, 2),表示从索引 2 开始查找,2 在数组中的索引位置为 1,由于从索引 2 开始未找到 2,因此返回 false
  • 对于 arr.includes(2, -2),表示从倒数第二个索引位置开始查找,因此并未找到 2,返回 false

注意事项

在使用 includes 方法时需要注意以下几点:

参数类型

  • valueToFind 参数必须为基本类型或对象类型。如果 valueToFind 参数是一个对象,那么在比较时会使用“严格相等”(即 ===)进行比较。

fromIndex 参数

  • fromIndex 参数如果为负数,则表示从倒数第几个索引开始查找。例如,如果 fromIndex 参数为 -1,那么从倒数第一个索引开始查找。如果 fromIndex 参数的绝对值大于等于数组的长度,将不会进行检索。
  • 如果 fromIndex 参数为小数,则自动取整为整数。
  • 如果 fromIndex 参数为 undefined,将从数组的头部开始检索。

indexOf 方法的问题

在 ES6 之前,判断数组中是否包含某个值需要使用 indexOf 方法,但该方法存在一些问题:

  • indexOf 方法无法判断 NaN 是否在数组中存在;
  • indexOf 方法无法判断两个对象是否相等(即便对象的值相等)。

因此,在这些情况下可以使用 includes 方法代替。

结论

ES7 中的 Array.prototype.includes 方法解决了在 JavaScript 中使用 indexOf 方法时存在的一些问题,使得数组的查找操作更加便捷,同时也降低了出错的风险。在实际开发中,应注意该方法使用的一些细节,并选择合适的场景使用它。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6753ab718bd460d3ada6ac70

纠错
反馈