ES6拓展运算符的常用场景
2018-03-08 15:31
441 查看
之前在学习vuex的辅助函数mapState时候,开始看了一下拓展运算符,当时理解的过于浅显,并写了一片浅显的文章
最近项目空闲期,想认真总结一下这个语法糖/三个点/拓展运算符
该运算符主要用于函数调用。
从最浅显的外表来看,就是脱掉数组的外套(数组的
比如:
好了,下面开始正式的去上实例:
伪数组/类数组转为真正的数组
注意: 对于那些没有部署 Iterator 接口的类似数组的对象,扩展运算符就无法将其转为真正的数组。
比如:
克隆数组
合并数组,或者将a数组混入到b数组中去
字符串转数组
与解构赋值结合,生成数组
或者在函数里面某个参数没有传值的情况下,就赋值空数组
具有 Iterator 接口的对象:Map 和 Set 结构,Generator 函数
扩展运算符内部调用的是数据结构的 Iterator 接口,因此只要具有 Iterator 接口的对象,都可以使用扩展运算符,比如 Map 结构。
最近项目空闲期,想认真总结一下这个语法糖/三个点/拓展运算符
拓展运算符的含义
将一个数组转为用逗号分隔的参数序列该运算符主要用于函数调用。
从最浅显的外表来看,就是脱掉数组的外套(数组的
[]就很像外套吧。。。),只留下里面的内容,用法就是把里面的内容混淆到其他对象中去;
比如:
var a =[{d:1}]//去掉外套就是 {d:1} var b = {...a,e:2} //b ={{d:1},{e:2}}
好了,下面开始正式的去上实例:
伪数组/类数组转为真正的数组
var divs = document.getElementsByClassName('.div'); //大家都知道divs是一个伪数组 var divArray = [...divs]
注意: 对于那些没有部署 Iterator 接口的类似数组的对象,扩展运算符就无法将其转为真正的数组。
比如:
let arrayLike = { '0': 'a', '1': 'b', '2': 'c', length: 3 }; //这样的就不行,这时,可以改为使用Array.from方法将arrayLike转为真正的数组。
克隆数组
var a=[1,2] var b =[...a] //b (2) [1, 2]
合并数组,或者将a数组混入到b数组中去
var a=[1,2] var b = [8,...a,9] //b (4) [8, 1, 2, 9]
字符串转数组
var s = 'nice' var a = [...s] //a (4) ["n", "i", "c", "e"]
与解构赋值结合,生成数组
const [a,...b]=[1,2,3] //a=1,b=[2,3]
或者在函数里面某个参数没有传值的情况下,就赋值空数组
function a ([m,...n]){console.log(m,n)} a([1]) //打印出 1 []
具有 Iterator 接口的对象:Map 和 Set 结构,Generator 函数
扩展运算符内部调用的是数据结构的 Iterator 接口,因此只要具有 Iterator 接口的对象,都可以使用扩展运算符,比如 Map 结构。
相关文章推荐
- ES6数组去重的最佳实践:Set结合Array.from() | 拓展运算符结合 Set
- ES6数组去重的最佳实践:Set结合Array.from() | 拓展运算符结合 Set
- ES6 随记(3.4.1)-- 函数的拓展(参数默认值,扩展运算符)
- Javascript常用运算符(Operators)-javascript基础教程
- 汇总八个常用的Docker真实应用场景
- webpack打包,es6语法报错,解决方案(包括es6扩展运算符报错)
- 常用设计模式的应用场景
- UC常用场景
- Es6的常用语法和优越性
- ES6常用的数组方法
- Redis常用数据类型介绍、使用场景及其操作命令
- Oracle常用运算符及表达式
- ES6里关于类的拓展(一)
- 在前端使用JSON两种常用场景的分析
- 常用设计模式及其应用场景
- \t\tXPath谓词(筛选表达式)及轴的概念 运算符及特殊字符 常用表达式实例
- Git Bash+EGit在项目中配合使用最常用方法总结(根据场景使用)
- C#中38个常用运算符的优先级的划分和理解。 [转载]
- es6数值类型拓展
- ES6 Class继承中super在不同场景中的用法