ES6拓展运算符(...)用例
1.找出数组中最大的数
使用Math.max()函数来获取最大值,数组是不能直接作为Math.max()的参数,我们需要把它展开。在ES6之前,我们也是需要结合apply来处理:
var arr = [2, 4, 8, 6, 0]; function max(arr) { return Math.max.apply(null, arr); } console.log(max(arr));
使用ES6扩展运算符(...)
var arr = [2, 4, 8, 6, 0]; console.log(Math.max(...arr));
2.复制数组
在ES6之前,是不能直接通过赋值的方式复制数组的。
var arr = ['a', 'b', 'c']; var arr2 = arr; arr2.push('d'); console.log(arr);//输出['a','b','c','d']
直接赋值的方式,实际上引用的是同一个数组,当任何一个数组里面的元素发生变化,两个数组都会同时改变。
ES6使用扩展运算符
var arr = ['a', 'b', 'c'];
var arr2 = [...arr];
arr2.push('d');
console.log(arr);//输出['a','b','c']
虽然arr2添加了元素'd',但是对数组arr来说,它的元素列表是没有发生改变的。这样就很简单实现了复制的功能。
3.插入数组
如果我们要在一个数组插入另外一个数组的元素,可以结合splice和apply使用,如:
var arr = [1, 2, 3, 4]; var arr1 = ["a", "b", "c", "d"]; arr.splice.apply(arr, [2, 0].concat(arr1)) console.log(arr)// [1, 2, "a", "b", "c", "d", 3, 4]
ES6使用扩展运算符
var arr=[1,2,3,4]; var arr1=["a","b","c","d"] arr.splice(2,0,...arr1) console.log(arr)// [1, 2, "a", "b", "c", "d", 3, 4]
4.将字符串转化为数组
var str ="hello"; var str1 = [...str]; console.log(str1)// ["h", "e", "l", "l", "o"]
5.收集剩余参数
function fn (a,b,...args) { console.log(a)//1 console.log(b)//2 console.log(args)//[3,4,5] } fn(1,2,3,4,5)
6.解构数组
var arr =[1,2,3,4,5]; var [a,b,c,...arr1] = arr; console.log(a,b,c,arr1)//1,2,3[4,5]