ES6的扩展运算符可以说是非常使用的,在给多参数函数传参,替代Apply,合并数组,和解构配合进行赋值方面提供了很好的便利性。

数组去重

var arr = [1,2,3,4,5,2,3,1];

var set = new Set(arr);

var newArr = [...set ];

最终得到的newArr就是一个去了重的数组

扩展运算符就是三个点“...”,就是将实现了Iterator 接口的对象中的每个元素都一个个的迭代并取出来变成单独的被使用。

看这个例子:

?

1

console.log(...[3, 4, 5])

结果:

3 4 5

调用其实就是:

?

1

console.log(3, 4, 5)

合并数组

可以使用扩展运算符将多个数组进行合并。

?

1

2

3

4

let arr1 = [1, 2, 3]

let arr2 = [4, 5, 6]

let arr3 = [7, 8, 9]

console.log([...arr1, ...arr2, ...arr3])

结果:

[ 1, 2, 3, 4, 5, 6, 7, 8, 9 ]

函数多参数传递, 替换Apply

先把参数定义成数组,函数定义好。

?

1

2

3

4

let arr4 = ['arg1', 'arg2', 'arg3', 'arg4']

let fun1 = (a1, a2, a3, a4) => {

 console.log( a1, a2, a3, a4)

}

在ES6前,要把数组参数传递给函数,要么按照下标访问数组元素去调用函数,缺点是数组个数和函数参数个数完全绑定,有一个个数发生变化,那么就要修改了。

?

1

fun1(arr4[0], arr4[1], arr4[2], arr4[3])

要么就用Apply进行调用,结果当然是没毛病,也是ES6之前用的最多的。

?

1

fun1.apply(null, arr4)

如果是用扩展运算符,那就方便咯。

?

1

fun1(...arr4)

结果:

arg1 arg2 arg3 arg4

调用简洁爽快。

与解构配合赋值

配合使用,可以从数组中提取除第一个以后的所有元素成另外一个数组。

?

1

2

3

let [var1, ...arr5] = [1, 2, 3, 4, 5, 6]

console.log(var1)

console.log(arr5)

结果:

1
[ 2, 3, 4, 5, 6 ]

但要注意,与解构配合时,扩展运算符只能用在最后一个上,否则报错。

可以展开实现了Iterator 接口的对象

比如Map,Set,数组就是从Iterator接口实现来的,Object不是,所以扩展Object会报错。

扩展Set。

?

1

2

3

4

5

let set1 = new Set()

set1.add(1)

set1.add(2)

set1.add(3)

console.log(...set1)

结果:

1 2 3

扩展Map。

?

1

2

3

4

5

let map1 = new Map();

map1.set('k1', 1);

map1.set('k2', 2);

map1.set('k3', 3);

console.log(...map1)

结果:

[ 'k1', 1 ] [ 'k2', 2 ] [ 'k3', 3 ]

注意,扩展出来的一个个的数组,按照map的键值对结构,每个数组都是2个元素,一个是key,一个是value。

如果扩展Object,就会报错。

?

1

2

3

4

5

6

let obj1 = {

  p1: 1,

  p2: 2,

  p3: 3

}

console.log(...obj1)

报错。

ES6的扩展运算符 [...arr]相关推荐

  1. 【ES6】...扩展运算符

    文章目录 扩展运算符 一.在函数中使用 1.1 传递实参 1.2 接收形参 1.3 new 表达式 二.在数组中使用 2.1 合并数组 2.2 拷贝数组 三.在对象中使用 3.1 合并对象 3.2 拷 ...

  2. ES6 的扩展运算符

    扩展语法 1. 函数 rest 参数 ES6 引入 rest 参数也叫剩余参数,用于获取函数的多余参数,可以替代使用arguments对象 ... 出现在函数参数列表的最后,那么它就是 rest 参数 ...

  3. es6之扩展运算符 Object.assign和 三个点(...)

    一.导读 ES6, 全称 ECMAScript 6.0 ,是 JavaScript 的下一个版本标准,2015.06 发版. ES6 主要是为了解决 ES5 的先天不足,比如 JavaScript 里 ...

  4. es6之扩展运算符...

    对象中的扩展运算符(...)用于取出参数对象中的所有可遍历属性,拷贝到当前对象之中 let bar = { a: 1, b: 2 }; let baz = { ...bar }; // { a: 1, ...

  5. es6之三个点(...) 扩展运算符数组和对象的使用场景及最常见的用法(霸霸看了都说好)

    概念 es6之扩展运算符 (-) 简称三个点 数组的扩展运算符应用 复制数组 扩展运算符提供了复制数组的简便写法. const a1 = [1, 2]; // 写法一 const a2 = [...a ...

  6. ES6增加了扩展运算符: ... 三个点是ES几的

    ES6 的扩展运算符( spread )是三个点(...).它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列. 1.将一个数组转为用逗号分隔的参数序列(把数组中元素展开). 如下: ...

  7. ES6 rest参数,扩展运算符,Symbol数据类型,迭代器和生成器 【详解加案例 】(二)

    文章目录 1.ES6 rest 参数 2. ES6 扩展运算符 2.1 ES6 简介 2.2 应用 3. ES6 Symbol 数据类型 3.1 Symbol两种创建方式 3.2 Symbol注意事项 ...

  8. ES6新特性_ES6扩展运算符的介绍---JavaScript_ECMAScript_ES6-ES11新特性工作笔记013

    接下来去看es6的扩展运算符 比如我声明一个常量数组tfboys=['','','']; 然后写一个函数,chunwan,然后 chunwan(tfboys);调用以后可以看到右边打印出来了,可以看到 ...

  9. 扩展运算符用法实例总结

    - ES6的扩展运算符 扩展运算符可以将数据展开 不能单独使用扩展运算符展开数组,可以在参数中使用,将参数数组转成参数列表. 如果扩展运算符后面跟的是变量,那么接受单独多余的数组放置到数组中. 扩展运 ...

最新文章

  1. JAVA SE学习day_11:集合的相关应用、增强型for循环、foreach方法、数组与集合的相互转换
  2. ExtJs与JavaScript的call方法
  3. Java中session的过时时间配置,session过时的优先级
  4. [C # 读书笔记]interface 接口 abstract
  5. HDUOJ---老人是真饿了
  6. StrongPity APT:不畏曝光,一心迭代,攻城掠地
  7. Asp.Net MVC学习总结(三)——过滤器你怎么看?
  8. Spring 当一个接口多个实现时,怎么注入
  9. unantu下的tmp文件夹_纯干货:Linux各文件夹结构说明及用途介绍
  10. matlab数字带通滤波器的设计,基于MATLAB的数字带通FIR滤波器设计.doc
  11. 软件测试流程图及描述
  12. 【郝斌C语言课程】学习笔记
  13. 详细了解DAS、SAN和NAS三种存储方式
  14. DOE全因子实验设计报告
  15. 国内 Top2 高校研一在读,为什么感觉深度学习越学越懵?
  16. 关于统计学中P值的理解
  17. 比较计算机动画与传统动画的异同,数字动画与传统动画有哪些不同-时间财富网...
  18. ZT中国制造的神奇硬盘
  19. Win11怎么连接上校园网?
  20. 《数据库系统原理》实验6:视图管理

热门文章

  1. 除视频水印的软件 md5修改
  2. Unity 3D学习(三)——打砖块
  3. 数据库中为什么叫“非平凡”的函数依赖Nontrivial Function Dependency? nontrivial的本意探讨
  4. 30多个实用matlab编程技巧
  5. 分布式Session共享的4类技术方案,与优劣势比较
  6. 2018年中国规模以上工业企业利润增长10.3%
  7. 深度学习网络设计原则
  8. google移动网页设计原则
  9. .Net SQLCommand用法.
  10. 物理学专业英语(写作整理)01