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 出生日期和身份证判断大全
Nov 13 Javascript
Extjs Ajax 乱码问题解决方案
Apr 15 Javascript
用apply让javascript函数仅执行一次的代码
Jun 27 Javascript
Jquery 在页面加载后执行的几种方式
Mar 14 Javascript
JavaScript基础知识之方法汇总结
Jan 24 Javascript
JavaScript 不支持 indexof 该如何解决
Mar 30 Javascript
js简单实现图片延迟加载的方法
Jul 19 Javascript
Vue2.0利用 v-model 实现组件props双向绑定的优美解决方案
Mar 13 Javascript
浅谈express 中间件机制及实现原理
Aug 31 Javascript
jQuery实现的简单对话框拖动功能示例
Jun 05 jQuery
JS获取当前时间的年月日时分秒及时间的格式化的方法
Dec 18 Javascript
vue.js自定义组件实现v-model双向数据绑定的示例代码
Jan 08 Javascript
手机端转换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实现的SESSION类
2014/12/02 PHP
PHP+百度AI OCR文字识别实现了图片的文字识别功能
2019/05/08 PHP
php实现的简单多进程服务器类完整示例
2020/02/01 PHP
PHP7创建销毁session的实例方法
2020/02/03 PHP
JavaScript 使用技巧精萃(.net html
2009/04/25 Javascript
经典海量jQuery插件 大家可以收藏一下
2010/02/07 Javascript
用box固定长宽实现图片自动轮播js代码
2014/06/09 Javascript
jQuery自带的一些常用方法总结
2014/09/03 Javascript
js控制div弹出层实现方法
2015/05/11 Javascript
Backbone.js的Hello World程序实例
2015/06/19 Javascript
js实现选中复选框文字变色的方法
2015/08/14 Javascript
JS数组排序技巧汇总(冒泡、sort、快速、希尔等排序)
2015/11/24 Javascript
JS 实现导航菜单中的二级下拉菜单的几种方式
2016/10/31 Javascript
仿iframe效果Aajx文件上传实例
2016/11/18 Javascript
jQuery实现圣诞节礼物动画案例解析
2016/12/25 Javascript
Vue组件通信实践记录(推荐)
2017/08/15 Javascript
基于js中document.cookie全面解析
2017/09/14 Javascript
微信小程序 循环及嵌套循环的使用总结
2017/09/26 Javascript
node结合swig渲染摸板的方法
2018/04/11 Javascript
JavaScript面向对象编程小游戏---贪吃蛇代码实例
2019/05/15 Javascript
原生js实现ajax请求和JSONP跨域请求操作示例
2020/03/14 Javascript
Python 文件操作技巧(File operation) 实例代码分析
2008/08/11 Python
Python设计模式中单例模式的实现及在Tornado中的应用
2016/03/02 Python
Java多线程实现四种方式原理详解
2020/06/02 Python
keras的backend 设置 tensorflow,theano操作
2020/06/30 Python
Python实现PS滤镜中的USM锐化效果
2020/12/04 Python
EJB2和EJB3在架构上的不同点
2014/09/29 面试题
幼儿园中班教学反思
2014/02/10 职场文书
禁烟标语大全
2014/06/11 职场文书
优秀教育工作者事迹材料
2014/12/24 职场文书
2015高三毕业寄语赠言
2015/02/27 职场文书
2015年个人实习工作总结
2015/05/28 职场文书
贫困证明书范文
2015/06/16 职场文书
推普标语口号大全
2015/12/26 职场文书
品德与社会教学反思
2016/02/24 职场文书
教你怎么用PyCharm为同一服务器配置多个python解释器
2021/05/31 Python