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 相关文章推荐
ExtJS 设置级联菜单的默认值
Jun 13 Javascript
JQuery中extend使用介绍
Mar 13 Javascript
JavaScript判断文件上传类型的方法
Sep 02 Javascript
jQuery插件Tooltipster实现漂亮的工具提示
Apr 12 Javascript
Javascript中 带名 匿名 箭头函数的重要区别(推荐)
Jan 29 Javascript
浅析vue component 组件使用
Mar 06 Javascript
利用JS对iframe父子(内外)页面进行操作的方法教程
Jun 15 Javascript
js链表操作(实例讲解)
Aug 29 Javascript
详解ES6中的代理模式——Proxy
Jan 08 Javascript
微信小程序登陆注册功能的实现代码
Dec 10 Javascript
nuxt.js 在middleware(中间件)中实现路由鉴权操作
Nov 06 Javascript
vue3 自定义图片放大器效果的示例代码
Jul 23 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安全性问题中的:Null 字符问题
2013/06/21 PHP
php实现分页工具类分享
2014/01/09 PHP
PHP分页类集锦
2014/11/18 PHP
thinkPHP2.1自定义标签库的导入方法详解
2016/07/20 PHP
php删除二维数组中的重复值方法
2018/03/12 PHP
php PDO属性设置与操作方法分析
2018/12/27 PHP
Javascript 面向对象编程(一) 封装
2011/08/28 Javascript
jQuery实现 注册时选择阅读条款 左右移动
2013/04/11 Javascript
关于eval 与new Function 到底该选哪个?
2013/04/17 Javascript
jquery使用jquery.zclip插件复制对象的实例教程
2013/12/04 Javascript
JavaScript DOM事件(笔记)
2015/04/08 Javascript
vue.js入门教程之计算属性
2016/09/01 Javascript
AngularJS定时器的使用与移除操作方法【interval与timeout】
2016/12/14 Javascript
js实现下一页页码效果
2017/03/07 Javascript
Angular4.x通过路由守卫进行路由重定向实现根据条件跳转到相应的页面(推荐)
2018/05/10 Javascript
vue实现简单的MVVM框架
2018/08/05 Javascript
JS插件clipboard.js实现一键复制粘贴功能
2020/12/04 Javascript
使用validate.js实现表单数据提交前的验证方法
2018/09/04 Javascript
JS实现的图片选择顺序切换和循环切换功能示例【测试可用】
2018/12/28 Javascript
layui 数据表格 点击分页按钮 监听事件的实例
2019/09/02 Javascript
vue fetch中的.then()的正确使用方法
2020/04/17 Javascript
原生js实现的观察者和订阅者模式简单示例
2020/04/18 Javascript
Python中函数的参数传递与可变长参数介绍
2015/06/30 Python
python实现log日志的示例代码
2018/04/28 Python
python函数与方法的区别总结
2019/06/23 Python
OpenCV+face++实现实时人脸识别解锁功能
2019/08/28 Python
Python实现多线程/多进程的TCP服务器
2019/09/03 Python
python matplotlib库的基本使用
2020/09/23 Python
Django-silk性能测试工具安装及使用解析
2020/11/28 Python
Old Navy加拿大官网:美式休闲服饰品牌
2017/09/26 全球购物
京东奢侈品:全球奢侈品牌
2018/03/17 全球购物
美国鲜花递送:UrbanStems
2021/01/04 全球购物
大学生先进事迹材料
2014/02/16 职场文书
初中国旗下的演讲稿
2014/08/28 职场文书
HTML基础-标签分类(闭合标签,空标签,块级元素,行内元素,行级块元素,可替换元素)
2021/03/31 HTML / CSS