ECMAScript 2017 中的 Array.prototype.includes():更好的数组处理

ECMAScript 2017 中的 Array.prototype.includes():更好的数组处理

介绍

ECMAScript 2017 是 JavaScript 语言草案的第七版,已于 2017 年发布。它引入了一些新的特性和功能,包括 Array.prototype.includes() 方法。这个新的方法是用来检查一个数组是否包含一个指定的元素,如果包含,返回 true;如果不包含,返回 false。

特性

包含元素的检查已经很长时间存在于 JavaScript 中,但是在这之前,我们使用的方法是 indexOf()。然而,这个方法有一些限制。例如:

  • 它不能检查 undefined 的情况;
  • 它不能确定 NaN 是否存在于数组中;
  • 它不能区分 +0 和 -0。

Array.prototype.includes() 方法解决了这些限制。这个方法可以检查与具体值进行比较,可以匹配 NaN,还可以区分 +0 和 -0。当查找 undefined 时,它也返回 true 或 false。

语法

它的语法如下:

array.includes(valueToFind[, fromIndex])

其中,array 表示要在其中搜索的数组,valueToFind 表示要查找的值。fromIndex 是可选的,用于指定开始搜索的索引。

返回值

如果找到 valueToFind,返回 true;否则返回 false。

示例代码

以下示例说明了这个方法是如何工作的:

const arr = [0, 1, 2, 3, NaN, -0];

console.log(arr.includes(2)); // true console.log(arr.includes(-0)); // true console.log(arr.includes(NaN)); // true console.log(arr.includes(4)); // false console.log(arr.includes(undefined)); // false

在上面的代码中,我们声明了一个包含 0、1、2、3、NaN、-0 的数组。我们使用 includes() 方法来检查数组中是否存在特定的值。我们发现,它可以检查 NaN,区分 +0 和 -0,还能够正确处理 undefined 的情况。

在这个例子中,我们使用了 ES6 的 const 声明来声明一个常量数组。在这个数组中,我们使用了一些特殊的值和数字。在 JavaScript 中,NaN 是一个特殊的值,不等于任何值,包括它本身。另一个有趣的点是,+0 和 -0 是相等的,但是 includes() 方法可以区分它们。

指导意义

包含元素的检查已经存在于 JavaScript 中很长时间,但是 indexOf() 方法在某些情况下有限制。现在,Array.prototype.includes() 方法能够解决这些限制,提供了更多的功能和灵活性,给前端开发提供了更多的选择。

如果您需要在数组中搜索一个值并返回对应的布尔值,那么 includes() 方法是一个很好的选择。它可以检查包括 NaN、undefined、+0 和 -0 在内的特殊值,并提供更好的可读性和可维护性。

总结

  • includes() 方法是 ECMAScript 2017 中的特性,用于检查一个数组是否包含一个指定的元素;
  • 它可以匹配 NaN,区分 +0 和 -0,还能够正确处理 undefined 的情况;
  • 建议在需要搜索数组并返回布尔值的情况下使用它;
  • 它提供了更多的功能和灵活性,给前端开发提供了更多的选择。

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


猜你喜欢

  • Mocha + Sinon + Chai 测试用例异步顺序的执行

    Mocha + Sinon + Chai 测试用例异步顺序的执行 在前端开发中,测试是非常重要的一环。Mocha、Sinon 和 Chai 是一些常用的测试框架和库,它们提供了能够让我们来用简洁易懂的...

    1 年前
  • 从 ES11 (2020) 开发者的角度看,nullish 合并运算符到底有什么用?

    从 ES11 (2020) 开发者的角度看,nullish 合并运算符到底有什么用? 在 JavaScript 开发中,我们经常需要对变量或属性进行条件判断,例如: --- - - - -- --上面...

    1 年前
  • Webpack plugin 之 optimize-css-assets-webpack-plugin 使用实战

    Webpack 是现代前端开发中最常用的构建工具之一,能够帮助我们将各种资源打包成一个或多个文件,以提高前端性能和开发效率。在实际应用中,我们常常需要对 CSS 进行优化,开发人员便需要用到 opti...

    1 年前
  • Gin Serverless Framework 在开发中遇到的坑及解决方案

    随着云计算的发展,Serverless 架构越来越受到开发者的关注。Gin Serverless Framework 是一个基于 Gin 和 AWS Lambda 的 Serverless 框架,它旨...

    1 年前
  • 如何优雅地在 ECMAScript 2015 中使用模块模式

    模块模式是前端开发中常用的一种编程模式,它能够帮助我们组织代码,提供代码的可重用性、可维护性和可测试性。在 ECMAScript 2015 中,我们可以使用 import 和 export 语句来实现...

    1 年前
  • 掌握 ES10 的 Array.flat() 方法,轻松处理多维数组

    在前端开发中,经常需要处理多层嵌套的数组,而这些数组的结构往往比较复杂,特别是在数据处理和可视化方面。ES10 中新增了 Array.flat() 方法,能够轻松地将多维数组转化为一维数组,使得数组的...

    1 年前
  • 镜像拉取问题如何处理?

    在前端开发过程中,使用 Docker 镜像进行开发和部署的方式已经成为常态。然而,我们在拉取镜像时,常常会遇到各种问题,例如超时、下载速度慢等,这些问题会直接影响我们的开发效率。

    1 年前
  • Redux 与 Immutable.js 配合使用的技巧和注意事项

    前言 在前端开发中,数据管理一直是一个重要的话题。Redux 是一个流行的 JavaScript 状态管理库,而 Immutable.js 则是一个用于创建不可变数据结构的库。

    1 年前
  • Material Design 中状态栏样式的设置方法

    Material Design 是一种界面设计语言,由 Google 推出。该设计语言通过引入新的视觉元素、增加动画效果等方式,使 Web 应用程序具有更好的用户体验。

    1 年前
  • Hapi 框架如何使用 Couchbase 数据库?

    引言 Hapi 框架是 Node.js 上最受欢迎的 Web 应用程序框架之一。它具有可扩展性、可配置性、插件化架构、代码优雅等众多优点。而 Couchbase 则是一款基于内存缓存的 NoSQL 数...

    1 年前
  • Angular 业务开发中的 HTTP 请求缓存问题

    在 Angular 业务开发中,经常会出现频繁发起相同的 HTTP 请求的情况,尤其是在使用数据量较大的 API 时。这些请求会消耗大量的资源和时间,降低应用程序的性能。

    1 年前
  • Cypress 跨平台兼容性问题的处理方法

    Cypress 是一款现代化的前端测试框架,能够帮助开发团队自动化地测试应用程序。Cypress 可以在多种平台上运行,如 MacOS、Windows 和 Linux 等等。

    1 年前
  • JavaScript Promise 中的 Cancelable Promise

    JavaScript Promise 中的 Cancelable Promise JavaScript Promise 是一个非常强大的异步编程工具,它可以让我们避免回调地狱,更加清晰地表达代码逻辑。

    1 年前
  • 解决 Node.js 安装失败的几种方式

    Node.js 是一款非常流行的前端开发工具,但是在安装的过程中也会出现各种问题,比如安装失败。如果你也遇到了这个问题,那么本篇文章将为你提供几种解决方案。 方案一:使用 nvm nvm(Node V...

    1 年前
  • 如何在 ECMAScript 2016 中使用模板字面量做条件判断?

    在 ECMAScript 2016 中,我们可以使用模板字面量来做条件判断,这种方式既简单又直观,可以提高我们的代码可读性和可维护性。 本文将介绍如何使用模板字面量做条件判断,并提供一些示例代码来帮助...

    1 年前
  • Fastify 应用性能排查及调优心得

    Fastify 是一款快速、低开销且高效的 Node.js Web 框架。正因为这些特性,Fastify 越来越受欢迎,并且成为了开发者的首选框架之一。然而,在高并发环境下,Fastify 应用的性能...

    1 年前
  • ES12 新特性预览:Logical Assignment 运算符(||=,&&=,??=)

    随着前端技术的发展,ES12 带来了一些重要的新增特性,其中一个引人注目的特性就是 Logical Assignment 运算符。逻辑赋值运算符是在赋值运算符(=)和逻辑运算符(&&,...

    1 年前
  • CSS Grid 属性中 fr 的理解

    CSS Grid 属性中的 fr 是一种相对单位,它代表了网格容器的可用空间的一部分。在网格布局中使用 CSS Grid 属性的 fr 可以让我们更加方便地进行布局,实现高度灵活的自适应页面设计。

    1 年前
  • 解决 React 组件重复渲染的问题

    React 是一款广受欢迎的前端框架,但它的一个问题是重复渲染。在 React 应用中,组件的渲染是最常见的任务之一。但是,当组件被频繁渲染时,会带来性能问题,导致应用程序变慢。

    1 年前
  • Deno 中如何处理请求参数?

    在现代 Web 开发中,处理请求参数是前端工作中的重要环节之一。Deno 是一个用于构建现代 Web 应用的新兴平台,也可以处理请求参数。本文将详细介绍在 Deno 中如何处理请求参数,并给出相关的示...

    1 年前

相关推荐

    暂无文章