Array.prototype.includes()
我们需要用.indexOf()来判断一个元素是否存在于数组的日子一去不复返啦。
['my','mom','hates','me'].indexOf('mom') // 1
// I know it sounds confusing but the value 1 represents
// the index at which the string 'mom' appears in the array.
// Not that I only have 1 mom.
请注意,关键字是''exist.''
如果我们想知道给定元素在数组中的索引值,用.indexOf()完全OK。
但是如果我们的目的是知道给定元素是否存在于数组中,很显然.indexOf()并不是一个很好的选项。理由很简单:但我们查询一个东西是否存在时,我们希望的到的结果是一个布尔值,而不是一个数字。
Array.prototype.includes()就可以做到。它可以确定一个给定元素是否存在于一个数组中,如果存在返回true,否则返回flase。
var life = ['mom', 'dad', 'brother']
life.includes('mom') // true
life.includes('girlfriend') // false
规范
Array.prototype.includes ( searchElement [ , fromIndex ] )
- serchElement-要寻找的元素
- fromIndex(可选) - 开始搜索位置的索引值
查看规范就像是在寻找力量
规范都说了些啥?
不要着急,让我们一步一步来,然后用例子来理解这些规范。
# includes
# [1] searchs in ascending order
> Array(10000000).concat(4).includes(4)
true # [Time] 500 miliseconds
> [4].concat(Array(10000000)).includes(4)
true # [Time] 90 miliseconds
# [2] uses SameValueZero algorithm
> [NaN].indexOf(NaN)
-1
> [NaN].includes(NaN)
true
# [3] if found at any position returns true
# otherwise, false is returned
> [1, 2, 3].includes(2)
true
> [1, 2, 3].includes(7)
false
# [4] it treats missing array elements as undefined
> [1, , 3].indexOf(undefined)
-1
1.这里的区别是元素'4'的位置。在我们的第一个例子中我们将4放在后面的位置,includes将会搜索整个数组。据详细说明,.includes() 寻找到searchElement之后会立即返回。于是第二个操作更快。
2.SameValueZero算法与Strict Equality Comparison(.indexOf()使用的)相比较,它居然允许寻找NAN元素!
3.当元素被找到时时返回true,否则返回false,再也不是返回索引值啦!
4.与.indexOf()不同的是,.includes()没有忽略数组中的缺失元素。
你感受到了这股神秘的力量了吗?
现在我们再来讲fromIndex
让我们来看看这个规范:
这个可选的第二个参 fromIndex默认值是0;如果大于或等于数组的长度,将会返回false,数组将不会被搜索; 如果是负数,将会从数组尾部开始偏移来计算fromIndex(array length + fromIndex),如果计算出来的index小于0,整个数组将会被搜索一遍。
# fromIndex
# [1] it defaults to 0
> [1,2,3].includes(1)
true
# [2] if >= array.length, false is returned
> [1,2,3].includes(1, 10)
false
# [3] if negative, it is used as the offset, i.e.
# offset = array.length + fromIndex
> [1,2,3].includes(3, -2) # fromIndex = 3 (array length) + -2 (fromIndex) = 1
true
# [4] if offset < 0, the whole array is searched
> [1,2,3].includes(1, -5) # fromIndex = 0
1.如果没有给fromeIndex值,将会使用默认值0,整个数组将会被搜索一遍。
2.如果fromIndex比数组的长度还大,.includes() 将会立即返回false
3.当 fromIndex 为负数时,将会得到一个计算值 array.length + fromIndex作为它的值。当你要寻找的元素在数组尾部时这将非常有用。例如, fromIndex = -5 将等同于搜索最后5个元素。
4.为了避免.includes()方法崩溃, 当fromIndex的值小于0时,整个数组都将被搜索一遍。
幂运算符( **)
**操作符跟Math.pow()的用法一样,将第一个操作数作为底,第二个擦作数为幂进行运算(比如 x ** y)。
# x ** y (aka Math.pow(x,y))
> 2 ** 2
4
> 2 ** 'operand'
NaN
好啦,今天的介绍到此结束,ES7的能力已传送完毕,赶紧用起来吧~
via medium.freecodecamp.org
相关推荐
flink-es7:为了使用Elasticsearch连接器,使用构建自动化工具(如Maven或SBT)的两个项目和带有SQL
这么做的前提是将版权声明和本章节包含到所有这样的复制版和衍生作品中。尽管如此,这份文档本身不能被以任何形式修改,包括移除其版权声明或其对Ecma国际的引用部分都是不允许的,除非是Ecma国际以开发任何文档或是...
组件之间的工作流和通信是使用建立的, 是稍微Flux范例。 单元测试由提供。 将Semantic-UI框架与React组件一起使用( react-semantify )。 如果出于某些原因您不想或不想使用Node进行文件处理,则可以使用...
《ES7特性在看板应用中的实践:kanban-app-es7》 kanban-app-es7是一个基于ES7特性的看板应用程序,它充分利用了JavaScript语言的最新改进,为项目管理和团队协作提供了直观、高效的工具。在本文中,我们将深入探讨...
以上只是ES6和ES7部分新特性的介绍,实际上这两个版本还引入了许多其他改进,如生成器、模块系统、尾调用优化等。学习并熟练掌握这些新特性,对于提升JavaScript编程能力大有裨益。在实际开发中,这些新功能可以提高...
promises-es6-es7 ES6和ES7中的承诺示例 ###安装Babel npm install -g babel npm install ### ES6 npm start ### ES7 npm run es7 package.json中的更多选项
本文将深入探讨一个名为 "react-sample-written-by-es7" 的React.js项目,该项目使用了ES7(即ECMAScript 2016)的特性。React.js是一个流行的JavaScript库,用于构建用户界面,尤其适用于构建单页应用程序。ES7是...
AWS Lambda-JavaScript ES7模板使用NodeJS进行测试,模拟事件,开发和部署到AWS Lambda的模板。 借助和此模板,您可以轻松编写ES6和ES7 JavaScript,而不必担心NodeJS版本的兼容性。例子// Native JS importimport ...
【标题】"东软单片机-ES7P213x——IIC从机配置.zip"中的内容主要涉及的是如何在基于东软单片机ES7P213x的系统中设置IIC(Inter-Integrated Circuit)协议,使其工作在从机模式下。IIC是一种多主控、多从机的两线制...
NG-ES7 探索结合使用ES6类,ES7装饰器和AngularJS(2.0版之前)的方法。这是非常Alpha的功能,其乐趣不仅仅是合法的开发。 入门 npm安装 cd进入src / todo或src / pinterest npm开始 导航到localhost:8080 查看...
在“apache-skywalking-apm-es7-8.7.0”这个版本中,它支持Elasticsearch 7.x版本,是针对SpringCloud应用进行链路追踪的理想工具。 **SkyWalking 的核心功能** 1. **链路追踪**:SkyWalking 提供了强大的分布式...
网页游戏-ES7 HTML5,CSS3,JavaScript(ES7 2017,ECMAScript 2017),WebGL和GLSL,音频和视频播放器,二十一点2021! <head> <meta content="text/html; charset=utf-8" ...
为了解决这个问题,开发者们开始探索更优雅的解决方案,这就是ES7 Decorators的用武之地。本文将深入探讨如何使用名为Fitted的库,它结合了ES7 Decorators,使HTTP请求变得更简洁、易读。 首先,让我们了解什么是...
Load canal adapter: es7 failed...canal-adapter1.1.5报错, 将client-adapter.es7x-1.1.5-SNAPSHOT-jar-with-dependencies.jar 替换掉release版本的plugin文件的 client-adapter.es7x-1.1.5-jar-with-dependencies.jar
"前端项目-es7-shim.zip" 是一个压缩包,它包含了一个名为 "es7-shim" 的项目,这个项目的目标是为那些不支持ES7特性的老旧JavaScript引擎提供兼容性支持。下面我们将深入探讨ES7中的重要特性以及如何通过shim来实现...
在这个"skywalking-es7-8.7.0"安装包中,SkyWalking 与 Elasticsearch 7 版本进行了集成,提供了一个高效的数据存储和分析平台。 1. **SkyWalking 的核心功能**: - **分布式追踪**:SkyWalking 可以收集服务间的...
基于海尔单片机ES7P003的红外解码源程序 1.使用外部中断+定时器解码 2.接收DATA由PA0输入 3.解码出来的地址码,地址反码, 数据码,数据反码经串口显示
《ES7P173x系列8位MCU应用笔记及例程详解》 本文将深入探讨AN096应用笔记中的核心内容,该笔记主要针对ES7P1731和ES7P1732这两款8位微控制器(MCU),提供详尽的应用指南和实例代码。作为一款在众多嵌入式系统中...
这个项目是我不久前为客户制作的一个简化版本:我们需要一个易于配置,理解和使用的ES7 API的内部版本。 我决定(至少暂时地)删除其所有专门的搜索/方法/汇总并发布,以供将来我和需要代码或示例的任何人使用。 我...