ES10 很好的新特性:Array.prototype.includes()

阅读时长 5 分钟读完

在前端开发中,我们常常需要对数组进行操作。ES10(ECMAScript 2019)引入了一些新的特性来帮助我们更好地处理数组。其中一个非常有用的新特性是 Array.prototype.includes() 方法。它可以轻松地查找数组中是否存在指定元素,而无需使用 indexOf() 或其他类似的方法。

什么是 Array.prototype.includes()?

Array.prototype.includes() 是一个可以用于数组中的实例方法,用于判断数组是否包含一个指定的元素。它的语法如下:

其中,searchElement 是要查找的元素,fromIndex 是搜寻的起始位置,默认值为 0。

如果在数组中找到 searchElement,则该方法将返回 true。否则,它将返回 false

Array.prototype.includes() 方法的优点

相比传统的 indexOf() 方法,Array.prototype.includes() 方法有很多优点。

首先,includes()indexOf() 更加简洁易读。它不仅可以让你的代码更加优雅,而且还可以提高代码的可读性。

接下来,Array.prototype.includes() 的性能比 indexOf() 更好。这是因为如果需要查找数组中是否存在一个元素,includes() 只需要遍历数组一次。另一方面,indexOf() 会在数组中查找该元素,如果找到它,就返回它的索引。由于它的查找方式是线性的,所以在查找大型数组时,性能可能会受到影响。

Array.prototype.includes() 方法如何使用?

你可以使用 Array.prototype.includes() 来检查数组中是否包含指定的元素。下面是一个代码示例:

在上面的示例中,我们定义了一个名为 people 的数组,并使用 includes() 方法检查其是否包含元素 'John'。由于数组中包含 'John',所以代码将输出 'John is in the array.'

Array.prototype.includes() 方法的返回值

Array.prototype.includes() 方法将返回一个布尔值。如果数组中包含指定的元素,则该方法返回 true。否则,它将返回 false

由于该方法返回一个布尔值,因此可以直接在条件语句中使用。下面是一个示例:

上面的代码将输出 Array includes number 3.

深入理解 Array.prototype.includes() 方法

虽然 Array.prototype.includes() 的用法很简单,但是在某些情况下,你可能需要深入了解其实现原理。

该方法的实现与 Array.prototype.indexOf() 的实现非常相似。事实上,如果你查看了 Array.prototype.includes() 方法的源代码,你会发现它与 indexOf() 几乎完全相同。

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

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

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

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

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

        ----
      -

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

该代码使用 Object.defineProperty() 方法将 Array.prototype.includes() 添加到了 Array 原型中。这是一个约定俗成的做法,includes() 的实现与 indexOf() 的实现非常类似。

总结

Array.prototype.includes() 是一种新的 ES10 特性。它大大简化了检查数组中是否包含指定元素的过程。使用该方法,你能够更加优雅、高效地解决数组查找问题。从性能和代码可读性的角度来看,它也比传统的 indexOf() 方法更有优势。 希望通过本文的介绍,你能更好的掌握 Array.prototype.includes() 的细节,更好的应用到实际开发工作中。

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

纠错
反馈