ES10 中的 Array.includes() 方法详解及使用示例

ES10 中的 Array.includes() 方法详解及使用示例

在过去的 JavaScript 中,想要检测一个数组中是否包含某个元素,我们通常会使用 indexOf() 方法。然而,在 ES10(也称为 ECMAScript 2019)中,Array.includes() 方法的出现改变了这一现状,使得检测一个元素是否包含在数组中变得更加简单、直观、易用。

在本文中,我们将学习 ES10 中 Array.includes() 方法的详细使用方法,包括它的语法、用法、示例代码以及它如何与其他方法一起使用。本文旨在深入理解该方法,以便您能在未来的 JavaScript 中,更好地利用它。

语法

Array.includes() 方法是一个用于判断一个数组是否包含特定元素的方法。它的语法如下:

array.includes(searchElement[, fromIndex])

其中,

  • array:必选项,输入想要判断的数组。
  • searchElement:必选项,表示要查找的元素。
  • fromIndex:可选项,表示搜索的起始索引位置。如果省略 fromIndex,则默认从索引位置 0 开始搜索。

该方法会返回一个 Boolean(布尔值),其中,true 表示数组中存在该元素,而 false 则表示不存在。

用法

下面是使用 Array.includes() 方法的示例代码:

const array1 = [1, 2, 3]; console.log(array1.includes(2)); // Output: true

在上面的代码中,我们创建了一个数组 array1,它包含了 1、2 和 3 这三个元素。接着,我们使用 console.log() 方法打印了 array1 是否包含元素 2。由于数组中确实包含该元素,所以该方法返回 true,而我们在控制台中看到的输出结果也是 true。

再看一组示例代码:

const array2 = [1, 2, 3, NaN]; console.log(array2.includes(NaN)); // Output: true

在这个代码中,我们声明了一个数组 array2,其中,包含了元素 1、2、3 和 NaN。由于 NaN 本身是 JavaScript 中一个独特的值,它与自己相等但与其他任何值都不相等,所以我们需要特别注意。

在使用 Array.includes() 方法时,我们可以将 NaN 作为 searchElement(要查找的元素),然后该方法就可以正确地返回 true。

我们还可以使用 fromIndex 搜索特定元素的位置,如下所示:

const array3 = [1, 2, 3]; console.log(array3.includes(1, 0)); // Output: true

在这个代码片段中,我们使用了 fromIndex 参数,并将其设置为 0。这意味着我们只会在索引 0 开始后的位置去搜索,而不会搜索前面的位置。因此,Array.includes() 方法会在数组的头一个元素(也就是 1)处找到由 searchElement 指定的值。

注意:如果 fromIndex 是负数,如 -1,则表示从数组的最后一个元素(即索引位置为 array.length -1)的前面开始搜索。

Array.includes() 方法的优点

与 indexOf() 方法不同,Array.includes() 方法有以下优点:

  • 它可以通过使用更简单和直观的语法,更轻松地检查数组中是否包含某个元素。
  • 它在检测 NaN 值时更为准确,在头疼的 NaN 定位上,Array.includes() 方法比 indexOf() 方法更为易用。
  • 它可以检测数组中是否包含 undefined 或 null。

与其他方法一起使用

Array.includes() 方法更方便有些方法一起使用,例如 filter() 和 some()。

filter() 方法

filter() 方法会返回一个满足指定条件的新数组。在使用filter() 方法时,我们可以结合使用 Array.includes() 方法来过滤数组中的特定元素。看下面的代码:

const arr1 = [1, 2, 3, 4, 5]; const arr2 = arr1.filter(item => !([2, 4].includes(item))); console.log(arr2); // Output: [1, 3, 5]

在这个例子中,我们使用 filter() 方法移除数组 arr1 中的元素 2 和 4。为了达到这个目的,我们在 filter() 方法中使用了 !([2, 4].includes(item))。由于 ! 运算符将搜索条件反转,所以只有不等于 2 并且也不等于 4 的元素才会留下。

some() 方法

some() 方法用于测试数组中的元素是否满足指定的条件。默认情况下,some() 方法会返回一个 Boolean 值。在使用 Array.includes() 时,我们可以借助 some() 方法来快速判断数组中是否包含多个值。看下面的代码:

const arr1 = [1, 2, 3, 4, 5]; console.log([1, 2].some(item => arr1.includes(item))); // Output: true

在这个例子中,我们使用 some() 方法返回一个 Boolean 值。由于数组 arr1 包含值 1 和 2,所以该方法返回 true。

总结

Array.includes() 方法提供了一种更简单、更直观的方式来检查数组中是否包含某个元素,并且在处理 NaN 值时更为准确和安全。此外,它可以与其他方法结合使用,如 filter() 和 some() 方法。

从一个更高的分享角度看,ES10 中的 Array.includes() 方法为我们开拓了更多学习 JavaScript 的路子,并且也让我们更加便捷了解到 JavaScript,可以更好的当成一名优秀的前端开发者。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/65b1f35fadd4f0e0ffb236b2


猜你喜欢

  • 如何在 ESLint 中配置 parserOptions,避免语法问题

    ESLint 是前端开发中非常常用的静态代码分析工具,可以帮助开发者更好地避免代码中的语法问题和潜在的错误。在使用 ESLint 时,配置 parserOptions 是非常重要的一步,因为这会影响到...

    9 个月前
  • 如何使用 Material Design 风格下的 CheckBox 控件

    在前端开发中,Material Design 是一个流行且颇具风格的设计规范。它的特点是注重平面化设计,形象生动,有利于提高应用程序的用户体验。CheckBox 控件是 Material Design...

    9 个月前
  • ES6 中的 Reflect 对象详解

    在 ES6 中,一个新的对象 Reflect 被引入,这个对象提供了一组类静态方法,这些方法可以用来代替一些语言内部的方法,比如 Object 对象上的方法。本篇文章将针对 Reflect 对象进行详...

    9 个月前
  • ES10 中字符串扩展 (String.prototype.trimStart() 和 String.prototype.trimEnd() ) 的运用

    在 ES10 中,JavaScript 字符串对象新增了两个方法:String.prototype.trimStart() 和 String.prototype.trimEnd(),用于去除字符串的前...

    9 个月前
  • 在 ES9 中使用可选的 catch 绑定来减少捕获异常时的变复杂度

    在 ES9 中使用可选的 catch 绑定来减少捕获异常时的变复杂度 当程序出现异常时,程序员需要捕捉这些异常并采取相应的措施来处理这些异常。在ES9中,可以使用可选的 catch 绑定来减少捕获异常...

    9 个月前
  • Mocha 和 Karma 的区别和联系

    Mocha 和 Karma 的区别和联系 前端开发中,测试是至关重要的一环。而 Mocha 和 Karma 都是目前比较流行的 JavaScript 测试框架。但是,它们的使用场景和功能有所不同。

    9 个月前
  • AngularJS 技巧之日期上传

    日期上传是常见的前端需求之一,而 AngularJS 内置的指令和过滤器可以轻松处理日期格式,提高页面效率。本文将会介绍有关 AngularJS 的日期上传技巧,包括输入控件、数据绑定和格式化方法。

    9 个月前
  • 如何在 Deno 中使用 less 和 scss

    前言 Deno是一个安全、稳定、具有现代语言特性的JavaScript(TypeScript)运行时。它已经被越来越多的人使用,并且它的生态系统日益壮大,从而吸引了很多前端开发人员的关注。

    9 个月前
  • 使用 LESS 编写响应式页面的技巧

    LESS 是一种 CSS 预处理器,它提供了许多有用的功能,可以帮助前端开发人员更容易地编写样式表,并且可以更加灵活地控制页面的样式。在本文中,我们将介绍如何使用 LESS 编写响应式页面的技巧。

    9 个月前
  • PM2 在多机房分布式部署下的应用与实践

    前端作为一个越来越重要的方向,往往需要处理多机房分布式部署的问题。而 PM2 作为 Node.js 进程管理器,其在多机房分布式部署下的应用非常重要。本文将会介绍 PM2 在多机房分布式部署中的应用与...

    9 个月前
  • Socket.io 与 Redis 配合实现多个服务之间的实时通信

    前言 实时通信对于现代 Web 应用来说越来越重要。在许多情况下,应用程序需要直接的持久连接以进行实时数据交换。这种虽然很流畅但确实很复杂,但可以通过使用 Socket.io 和 Redis 这两个流...

    9 个月前
  • 使用 ES7 的 Array.prototype.fill() 方法为数组元素添加默认值

    随着前端技术的快速发展,JavaScript 也在一直升级,ES7 也是我们常用的 JavaScript 版本之一。在 ES7 中,我们可以使用 Array.prototype.fill() 方法为数...

    9 个月前
  • ES8 中的异步迭代器 'async-iterator' 详解

    随着前端应用程序的不断发展,异步操作越来越普遍。ES8 的新增特性——异步迭代器(async-iterator)成为了解决这一问题的良好解决方案。本文将详细介绍 ES8 中的异步迭代器。

    9 个月前
  • 使用 A11y.css 优化网站无障碍性

    在现代社会中,我们的生活离不开网络,越来越多的人都习惯通过浏览器和网站获取信息、交流和娱乐。然而,有不少人由于生理和心理原因,需要使用辅助技术才能浏览网页,如盲人需要阅读器,视力受损者需要放大器等,这...

    9 个月前
  • Tailwind 中如何处理图像尺寸和位置?

    Tailwind 是当前最流行的 CSS 框架之一,它采用了类似于编程的方式来编写 CSS 样式,可以大大提升前端开发的效率。虽然 Tailwind 的主要功能是处理样式,但在实际开发中,图像处理也不...

    9 个月前
  • koa2+websocket 初探

    随着互联网技术的发展,实时性要求越来越高的场景越来越多,例如线上教育、在线游戏、在线投票等。WebSocket 技术正好可以满足这些需求,而我们本篇文章主要介绍如何用 Koa2 框架实现 WebSoc...

    9 个月前
  • Promise 中如何正确处理 NaN 的问题

    在 JavaScript 中,NaN 表示不是一个数字。当进行数学计算时,如果结果无法表示为数字,则会返回 NaN。但是,NaN 与任何值都不相等,包括它本身。这就意味着 NaN 的存在可能导致一些意...

    9 个月前
  • 在 Material Design 风格下的实现 ListView 的滑动删除功能

    Material Design 是一种以平面化、简洁、明快、鲜明色彩和生动的动效为特点的设计语言,旨在提供更加统一的UI体验。在这个设计语言下,ListView 的滑动删除功能是一种常见的操作,本文将...

    9 个月前
  • Enzyme 详细使用手册:在 React 项目中进行组件测试

    在 React 项目中进行组件测试是前端开发中很重要的一环。而 Enzyme 是目前 React 生态中使用最为广泛的测试库之一,它提供了强大而易用的 API,能够让我们轻松地模拟 React 组件的...

    9 个月前
  • Headless CMS 在 Serverless 架构中的使用与优化

    什么是 Headless CMS? Headless Content Management System(简称 Headless CMS)是一种与传统 CMS 相反的方式,对于内容管理系统的解耦。

    9 个月前

相关推荐

    暂无文章