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进行文件处理,则可以使用...
ES6-ES7 了解ES6 / ES7中引入的新JavaScript语法和新功能
promises-es6-es7 ES6和ES7中的承诺示例 ###安装Babel npm install -g babel npm install ### ES6 npm start ### ES7 npm run es7 package.json中的更多选项
AWS Lambda-JavaScript ES7模板使用NodeJS进行测试,模拟事件,开发和部署到AWS Lambda的模板。 借助和此模板,您可以轻松编写ES6和ES7 JavaScript,而不必担心NodeJS版本的兼容性。例子// Native JS importimport ...
由 es7 编写的 react-sample 由 ES7 编写的 React.js 示例 图书馆 见package.json 执照 麻省理工学院执照。
安装 npm installjspm install
Fitted: 使用ES7 decorators简化http请求
NG-ES7 探索结合使用ES6类,ES7装饰器和AngularJS(2.0版之前)的方法。这是非常Alpha的功能,其乐趣不仅仅是合法的开发。 入门 npm安装 cd进入src / todo或src / pinterest npm开始 导航到localhost:8080 查看...
东软载波 ES7P003单片机的中文数据手册。ES7P003管脚兼容STM8S003、新唐N76E003,主要性能特点: 工作电压范围:2.3V ~ 5.5V 工作温度范围:-40 ~ 85℃ 设计工艺及封装 低功耗、高速FLASH CMOS 工艺 ...
网页游戏-ES7 HTML5,CSS3,JavaScript(ES7 2017,ECMAScript 2017),WebGL和GLSL,音频和视频播放器,二十一点2021! <head> <meta content="text/html; charset=utf-8" ...
东软单片机-ES7P213x——IIC从机配置
ES7P1731/ES7P1732 : 8位MCU应用笔记及例程
ES7P1731/ES7P1732 : 8位MCU数据手册
微信小程序demo:音乐播放器 技术栈 redux + es7 +labrador(源代码+截图)微信小程序demo:音乐播放器 技术栈 redux + es7 +labrador(源代码+截图)微信小程序demo:音乐播放器 技术栈 redux + es7 +labrador(源代码+...
这个项目是我不久前为客户制作的一个简化版本:我们需要一个易于配置,理解和使用的ES7 API的内部版本。 我决定(至少暂时地)删除其所有专门的搜索/方法/汇总并发布,以供将来我和需要代码或示例的任何人使用。 我...
ES7-ES12 的知识点你
前端项目-es7-shim,ECMAScript 7 compatibility shims for legacy JavaScript engines
西门子ET200_ISP 6 ES7_135接线端子示意图zip,西门子ET200_ISP 6 ES7_135接线端子示意图