前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ES6的扩展运算符(...)---数组篇

ES6的扩展运算符(...)---数组篇

作者头像
用户3258338
发布2019-07-19 17:14:29
5390
发布2019-07-19 17:14:29
举报

哈喽,大家好,又一周过去了,时间过得好快,各位宝宝这一周有没有进步呢?有没有更了解自己呢?嗯哼,我有点心虚……o(╯□╰)o

speak in cheap!

接着上周的ES6的扩展运算符,我们这周主题是数组与扩展运算符(...);

与数组一起扩展运算符的作用其实就是将数组转换成用逗号分隔的参数序列;

代码语言:javascript
复制
let a =[1,2,...[3,4,5]]
//a =[1,2,3,4,5];

用于函数的参数;

代码语言:javascript
复制
let a=[1,2,3]
a.push(...[4,5,6]);
// a = [1,2,3,4,5,6]

根据它的特性,扩展运算符可用于:

1.数组的解构赋值

代码语言:javascript
复制
const [first,...rest] = [1,2,3,4,5];
first //1
rest //[2,3,4,5]

const [first,...rest] = [];
first //undefined
rest //[]
const [first,...rest] = ['foo'];
first //'foo'
rest //[]

注意:

扩展运算符必须放在最后,否则报错

代码语言:javascript
复制
const [...a,b] = [1,2,3,4,5,6];
//报错
const [first ,...middle,last] = [1,2,3,4,5];
//报错

2.数组的合并

代码语言:javascript
复制
// ES5
[2,3].concat([7,8]);
// ES6
[2,3,...[7,8]];

3.将字符串转成真正的数组

代码语言:javascript
复制
var a = [...'hello']
// a =[ "h", "e", "l", "l", "o" ]

使用上面的写法可以正确识别32位Unicode字符串的长度;

代码语言:javascript
复制
'x\uD83D\uDE80y'.length // 4
[...'x\uD83D\uDE80y'].length // 3

4.将具有Iterator接口的对象,转为真正的数组。

代码语言:javascript
复制
var nodeList = document.querySelectorAll('div');
var array = [...nodeList];

nodeList是一个类数组,使用扩展运算符可以将类数组转换成真正的数组;

原型部署了iterator的数据有数组、类似数组的对象、Map、Set;

为什么对象没有部署iterator接口呢?原因如下:

对象的属性哪个先遍历,哪个后遍历,需要操作者手动指定;遍历遍历器是一种线性处理,给对象部署iterator接口相当于对非线性数据结构进行一种线性转换;还有就是给对象部署iterator接口不是很必要,因为Map有iterator接口可以弥补这一点。

总之...和数组一起有三种用法:

(1) 展开运算;例如数组合并、作为函数参数、字符串转数组

(2) 剩余运算;数组的解构赋值

(3) 转数组:将具有iterator接口的对象转换成真正的数组

所以关于扩展运算符,到这里只是了解了而已,之后还需要深入学习,共同进步吧,各位宝宝们!

愿我们有能力不向生活缴械投降---Lin

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-03-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 女程序员的日常 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档