ES7 中的 Array.prototype.includes 方法与 indexOf 方法的区别

在 ES7 中,JavaScript 引入了一个新的数组方法 Array.prototype.includes,该方法被设计用于检查数组是否包含特定的元素。在此之前,数组的检索通常依靠数组方法 Array.prototype.indexOf 来实现。虽然两个方法作用相似,但它们之间存在差异。

Array.prototype.indexOf 方法

Array.prototype.indexOf 方法是一种在数组中查找给定值的直接方法,它返回第一个找到元素的索引,如果找不到,则返回 -1。该方法的语法如下:

----------------------------- -----------

其中:

  • searchElement:必选项,要查找的元素。
  • fromIndex:可选项,从哪个索引处开始搜索。

例如,以下代码片段在数字数组中查找数字9:

--- ------- - --- -- -- -- -- -- -- -- -- ----
--- ----- - -------------------
------------------- -- -

如果找不到搜索元素,则返回 -1:

--- ----- - --------------------
------------------- -- --

Array.prototype.includes 方法

Array.prototype.includes 方法是一种检查数组是否包含特定项的方法,它返回一个布尔值。该方法的语法如下:

------------------------------ -----------

其中:

  • searchElement:必选项,要查找的元素。
  • fromIndex:可选项,从哪个索引处开始搜索。

例如,以下代码片段使用 Array.prototype.includes 在数字数组中查找数字9:

--- ------- - --- -- -- -- -- -- -- -- -- ----
--- ----- - --------------------
------------------- -- ----

如果搜索元素不存在,则返回 false:

--- ----- - ---------------------
------------------- -- -----

区别与联系

虽然 Array.prototype.includes 方法功能类似于 Array.prototype.indexOf,但它们之间有一些重要的区别。

首先,两个方法的返回类型不同:Array.prototype.indexOf 方法返回元素的索引,而 Array.prototype.includes 方法返回布尔值。

其次,Array.prototype.includes 方法可以检索 NaN 值,而 Array.prototype.indexOf 方法无法正确处理此类情况。例如:

--- ------- - --- -- -- -----
---------------------------------- -- --
----------------------------------- -- ----

最后,Array.prototype.includes 方法具有更简洁的语法,特别是当只需要检查一个元素是否存在时。在这种情况下,使用 Array.prototype.includes 方法可以让代码更加简洁易懂。

应用场景

使用 Array.prototype.indexOf 方法通常可以满足大多数情况,但是当需要检索数组中是否有 NaN 或具有更简洁的语法时,应该使用 Array.prototype.includes 方法。

例如,以下代码片段使用 Array.prototype.includes 方法在一个字符串数组中检查是否包含特定的字符串:

--- ------ - --------- --------- ----------
--- ------------- - -------------------------
--------------------------- -- ----

在实际的应用中,Array.prototype.includes 方法可以帮助我们更快地编写代码并减少错误。例如,当需要在列表中搜索多个元素时,使用 Array.prototype.includes 方法可以将多个检查组合成单一的操作,以简化代码并提高可读性。

结论

在 ES7 中,JavaScript 引入了一个新的数组方法 Array.prototype.includes,该方法是一种检查数组是否包含特定项的方法,并返回一个布尔值。相比之下,Array.prototype.indexOf 方法是一种在数组中查找给定值的直接方法,它返回第一个找到元素的索引,如果找不到,则返回 -1。

虽然两个方法功能类似,但是在实践中,应该根据具体需求选择使用哪种方法。在不需要检索 NaN 值和具有更简洁的语法时,可以使用 Array.prototype.indexOf 方法。而在需要检索 NaN 值和具有更简洁的语法时,应该使用 Array.prototype.includes 方法。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6709e891d91dce0dc87cede0