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 相关文章推荐
如何实现JS函数的重载
Sep 22 Javascript
javascript string字符串优化问题
Jul 31 Javascript
ASP.NET jQuery 实例5 (显示CheckBoxList成员选中的内容)
Jan 13 Javascript
js中页面的重新加载(当前页面/上级页面)及frame或iframe元素引用介绍
Jan 24 Javascript
JS过滤url参数特殊字符的实现方法
Dec 24 Javascript
用JavaScript获取页面文档内容的实现代码
Jun 10 Javascript
javaScript事件机制兼容【详细整理】
Jul 23 Javascript
ThinkJS中如何使用MongoDB的CURD操作
Dec 13 Javascript
Bootbox将后台JSON数据填充Form表单的实例代码
Sep 10 Javascript
详解Vue 如何监听Array的变化
Jun 06 Javascript
element-ui 中使用upload多文件上传只请求一次接口
Jul 19 Javascript
Vue提供的三种调试方式你知道吗
Jan 18 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
收音机鉴频器对声音的影响和频偏分析
2021/03/02 无线电
php远程下载类分享
2016/04/13 PHP
php输出图像的方法实例分析
2017/02/16 PHP
CodeIgniter框架验证码类库文件与用法示例
2017/03/18 PHP
php strftime函数获取日期时间(switch用法)
2018/05/16 PHP
利用js跨页面保存变量做菜单的方法
2008/01/17 Javascript
IE和firefox浏览器的event事件兼容性汇总
2009/12/06 Javascript
Javascript继承(上)——对象构建介绍
2012/11/08 Javascript
js实现身份证号码验证的简单实例
2014/02/19 Javascript
jQuery实现的在线答题功能
2015/04/12 Javascript
如何使用jQuery技术开发ios风格的页面导航菜单
2015/07/29 Javascript
javascript函数命名的三种方式及区别介绍
2016/03/22 Javascript
AngularJs学习第八篇 过滤器filter创建
2016/06/08 Javascript
初学者AngularJS的环境搭建过程
2017/10/27 Javascript
解决mpvue + vuex 开发微信小程序vuex辅助函数mapState、mapGetters不可用问题
2018/08/03 Javascript
使用Vue实现调用接口加载页面初始数据
2019/10/28 Javascript
Element-UI 使用el-row 分栏布局的教程
2020/10/26 Javascript
python编程之requests在网络请求中添加cookies参数方法详解
2017/10/25 Python
学习Python selenium自动化网页抓取器
2018/01/20 Python
python selenium 弹出框处理的实现
2019/02/26 Python
浅谈Python反射 &amp; 单例模式
2019/03/21 Python
在python中将list分段并保存为array类型的方法
2019/07/15 Python
python判断无向图环是否存在的示例
2019/11/22 Python
Python中使用gflags实例及原理解析
2019/12/13 Python
python实现井字棋小游戏
2020/03/04 Python
python suds访问webservice服务实现
2020/06/26 Python
Python之字符串的遍历的4种方式
2020/12/08 Python
html5与css3小应用
2013/04/03 HTML / CSS
System.Array.CopyTo()和System.Array.Clone()有什么区别
2016/06/20 面试题
公务员个人自我评价分享
2013/11/06 职场文书
六月份红领巾广播稿
2014/02/03 职场文书
内衣营销方案
2014/03/15 职场文书
计划生育诚信协议书
2014/11/02 职场文书
2015年端午节活动总结
2015/02/11 职场文书
结婚喜宴祝酒词
2015/08/10 职场文书
POST提交数据常见的四种方式
2022/01/18 HTML / CSS