ES6新特性之数组、Math和扩展操作符用法示例


Posted in Javascript onApril 01, 2017

本文实例讲述了ES6新特性之数组、Math和扩展操作符用法。分享给大家供大家参考,具体如下:

一、Array

Array对象增加了一些新的静态方法,Array原型上也增加了一些新方法。

1.Array.from 从类数组和可遍历对象中创建Array的实例

类数组对象包括:函数中的arguments、由document.getElementsByTagName()返回的nodeList对象、新增加的Map和Set数据结构。

//in ES6中 类数组转换为数组的方法
let itemElements=document.querySelectorAll('.item');
let items=Array.from(itemElements);
items.forEach(function(item){
   console.log(item.nodeType);
});
//in ES5 类数组转换数组的方法
var items=Array.prototype.slice.call(itemElements);

上面的例子中,类数组对象itemElements对象是不具备数组方法forEach()的,但可以通过Array.from()方法转换为Array。

Array.from()另一个特性是它的第二个可选参数mapFunction,该参数允许你通过一次单独调用创建一个新的映射数组:

let navElements=document.querySelectorAll("nav li");
let navTitles=Array.from(navElements,el=>el.textContent);

2.Array.of方法

该方法表现的很像Array的构造函数,它适合只传一个参数的情况,因此Array.of是new Array()的更优选择,所以,构建数组的方式,现在有三种:

let x=new Array(3);// [undefined,undefined,undefined]
let y=Array.of(8);//[8]
let z=[1,2,3];

3.Array的find,findIndex,fill方法

1)find返回回调返回true的第一个元素
2)findIndex返回回调函数返回true的第一个元素的下标
3)fill用所给参数‘覆盖'数组的元素

[5,3,4,10,1].find(n=>n===10);//10
[5,3,4,10,1].findIndex(n=>n===10);//2
[5,3,4,10,1].fill(7);//[7,7,7,7,7]
[5,3,4,10,1].fill(7,1,3);//[5,7,7,7,1]

二、Math

Math对象新增了几个新方法:

//Math.sign返回数字的符号,结果为1、-1或0
   Math.sign(5);//1
   Math.sign(-9)//-1
//Math.trunc 返回无小数位的数字
   Math.trunc(5.9);//5
   Math.trunc(6.8908);//6
//Math.cbrt返回数字的立方根
   Math.cbrt(64);//4

三、扩展操作符

扩展操作符用于特定地方扩展元素,例如:在一个数组中扩展一个数组的元素。

let values=[1,2,4];
let some=[...values,8];//[1,2,4,8]
let more=[...values,8,...values];//[1,2,4,8,1,2,4]

再如  函数调用中的参数中的应用:

let values=[1,2,4];
doSomething(...values);
function doSomething(x,y,z){
  //x=1.y=2,z=4
}
//在ES5中的调用方式
doSomething.apply(null,values);

正如所看到的,该语法使我们免去使用fn.apply()的麻烦,它很灵活,因为扩展操作符可以用在参数列表中的任意位置。

我们已经看到把扩展操作符应用在数组和参数中,事实上,我们可以把它用在所有可比案例的对象中:

let form = document.querySelectorAll('#my-form').
  inputs=form.querySelectorAll('input');
  selects=form.qurySelectorAll('select');
let allTheThings=[form,...inputs,...selects];

现在,allTheThings是一个包含<form>节点、<input>子节点和<select>子节点的二维数组。

希望本文所述对大家ECMAScript程序设计有所帮助。

Javascript 相关文章推荐
JavaScript 继承的实现
Jul 09 Javascript
js+css在交互上的应用
Jul 18 Javascript
JavaScript异步编程:异步数据收集的具体方法
Aug 19 Javascript
简介JavaScript中Math.LOG10E属性的使用
Jun 14 Javascript
js实现超简单的展开、折叠目录代码
Aug 28 Javascript
Javascript同时声明一连串(多个)变量的方法
Jan 23 Javascript
原生js二级联动效果
Jun 20 Javascript
利用require.js与angular搭建spa应用的方法实例
Jul 19 Javascript
浅谈angular2 组件的生命周期钩子
Aug 12 Javascript
Angularjs实现上传图片预览功能
Sep 01 Javascript
移动端图片上传旋转、压缩问题的方法
Oct 16 Javascript
vue组件vue-esign实现电子签名
Apr 21 Vue.js
手机端转换rem适应
Apr 01 #Javascript
ES6新特性之变量和字符串用法示例
Apr 01 #Javascript
ES5学习教程之Array对象
Apr 01 #Javascript
jq checkbox 的全选并ajax传参的实例
Apr 01 #Javascript
js实现音频控制进度条功能
Apr 01 #Javascript
ES6(ECMAScript 6)新特性之模板字符串用法分析
Apr 01 #Javascript
Linux CentOS系统下安装node.js与express的方法
Apr 01 #Javascript
You might like
php中文件上传的安全问题
2006/10/09 PHP
PHP利用二叉堆实现TopK-算法的方法详解
2017/04/24 PHP
JQuery 风格的HTML文本转义
2009/07/01 Javascript
niceTitle 基于jquery的超链接提示插件
2010/05/31 Javascript
JS从数组中随机取出几个数组元素的方法
2016/08/02 Javascript
javascript设计模式之Adapter模式【适配器模式】实现方法示例
2017/01/13 Javascript
node内置调试方法总结
2018/02/22 Javascript
Angularjs之如何在跨域请求中传输Cookie的方法
2018/06/01 Javascript
vue基础之模板和过滤器用法实例分析
2019/03/12 Javascript
通过js示例讲解时间复杂度与空间复杂度
2019/08/06 Javascript
JavaScript相等运算符的九条规则示例详解
2019/10/20 Javascript
Angular如何由模板生成DOM树的方法
2019/12/23 Javascript
python 解析html之BeautifulSoup
2009/07/07 Python
使用Python的Tornado框架实现一个简单的WebQQ机器人
2015/04/24 Python
浅谈Python数据类型之间的转换
2016/06/08 Python
用virtualenv建立多个Python独立虚拟开发环境
2017/07/06 Python
详解Python对JSON中的特殊类型进行Encoder
2019/07/15 Python
python使用socket实现的传输demo示例【基于TCP协议】
2019/09/24 Python
python路径的写法及目录的获取方式
2019/12/26 Python
python爬虫开发之Request模块从安装到详细使用方法与实例全解
2020/03/09 Python
Python Selenium 设置元素等待的三种方式
2020/03/18 Python
python Socket网络编程实现C/S模式和P2P
2020/06/22 Python
Pycharm配置autopep8实现流程解析
2020/11/28 Python
html5 sessionStorage会话存储_动力节点Java学院整理
2017/07/06 HTML / CSS
购买原创艺术品:Zatista
2019/11/09 全球购物
什么是Oracle的后台进程background processes?都有哪些后台进程?
2012/04/26 面试题
高级护理实习生自荐信
2013/09/28 职场文书
暑期社会实践感言
2014/02/25 职场文书
美术毕业生求职信
2014/02/25 职场文书
书香校园活动方案
2014/02/28 职场文书
年度评优评先方案
2014/06/03 职场文书
大学迎新标语
2014/06/26 职场文书
比赛口号霸气押韵
2015/12/24 职场文书
2019年教师节活动策划方案
2019/09/09 职场文书
四年级作文之植物
2019/09/20 职场文书
德劲DE1102数字调谐收音机机评
2022/04/07 无线电