Array.prototype.includes() 与 Array.prototype.indexOf() 的区别在哪?

阅读时长 4 分钟读完

前言

在前端开发过程中,我们常常需要操作数组来处理数据。而在数组的操作中,涉及到查找特定元素的场景是非常普遍的。由于 JavaScript 语言中提供了多种查找数组元素的方法,本文将探讨两种查找方法的区别,分别是 Array.prototype.includes()Array.prototype.indexOf()

Array.prototype.includes()

首先来看 Array.prototype.includes()。该方法用于判断数组中是否包含指定的元素,并返回一个布尔值。其基本语法如下:

其中:

  • searchElement:要查找的元素
  • fromIndex:可选参数,表示从哪个索引位置开始查找。默认值为 0。

使用该方法的例子如下:

可以看到,includes() 方法会返回布尔值,并表示数组中是否包含指定的元素。该方法会从数组的开头开始查找,并返回最先找到的该元素的位置,如果没有找到则返回 false。

需要注意的是,includes() 方法和 indexOf() 方法有些区别,具体可以看下文。

Array.prototype.indexOf()

接下来看一下 Array.prototype.indexOf()。该方法用于查找指定元素在数组中的位置,并返回其索引值。其基本语法如下:

其中:

  • searchElement:要查找的元素
  • fromIndex:可选参数,表示从哪个索引位置开始查找。默认值为 0。

使用该方法的例子如下:

可以看到,indexOf() 方法会返回该元素在数组中的索引值,如果该元素不存在于数组中,则返回 -1。需要注意的是,该方法会从数组的开头开始查找,返回最先找到的该元素的位置,并不会返回所有符合条件的元素位置,具体可以看下面的例子:

上面的例子中,数组中有两个值为 2 的元素,但是 indexOf() 方法只返回了第一个元素的位置,而 lastIndexOf() 方法则返回了最后一个元素的位置。

区别

两者的区别在于:

  • 返回值不同includes() 方法会返回布尔值,表示是否存在该元素;而 indexOf() 方法会返回该元素在数组中的索引值,如果该元素不存在于数组中,则返回 -1。
  • 返回所有符合条件的结果indexOf() 方法只能返回最先找到的元素的位置,而 includes() 方法会返回所有符合条件的结果。

因此,如果我们需要查找数组中是否存在某个元素时,可以使用 includes() 方法,如果需要查找某个元素在数组中的位置,则可以使用 indexOf() 方法。需要注意的是,对于数组中不存在的元素,两者的返回值是有区别的。

总结

本篇文章介绍了两种数组查找方法的区别,分别是 Array.prototype.includes()Array.prototype.indexOf()。需要根据实际的需求选择不同的方法。

如果你想进一步了解 JavaScript 数组的操作方法,请阅读《JavaScript 数组操作指南》

示例代码

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

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

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

纠错
反馈