它是什么
es6中引入扩展运算符(...),它用于把一个数组转化为用逗号分隔的参数序列,它常用在不定参数个数时的函数调用,数组合并等情形。因为typeScript是es6的超集,所以typeScript也支持扩展运算符。
用在哪儿
可变参数个数的函数调用
functionpush(array, ...items){ array.push(...items); }functionadd(...vals){letsum=0;for(leti=0;i
更便捷的数组合并
letarr1 = [1,2];letarr2 = [5,6];letnewArr = [20];//es5 旧写法newArr = newArr.concat(arr1).concat(arr2);//[20,1,2,5,6]console.log(newArr);//es6 使用扩展运算符newArr = [20,...arr1,...arr2];//[20,1,2,5,6]console.log(newArr);
替代es5的apply方法
// ES5 的写法 functionf(x, y, z){// ... }varargs = [0,1,2]; f.apply(null, args);// ES6 的写法 functionf(x, y, z){// ... }varargs = [0,1,2]; f(...args);
求最大值Math.max()
// ES5 的写法 Math.max.apply(null, [14,3,77])// ES6 的写法 Math.max(...[14,3,77])// 等同于 Math.max(14,3,77);
通过push函数,将一个数组添加到另一个数组的尾部
// ES5 的写法 vararr1 = [0,1,2];vararr2 = [3,4,5];Array.prototype.push.apply(arr1, arr2);// ES6 的写法 vararr1 = [0,1,2];vararr2 = [3,4,5]; arr1.push(...arr2);
新建Date类型
// ES5 new(Date.bind.apply(Date, [null,2015,1,1]))// ES6 newDate(...[2015,1,1]);
与解构赋值结合,生成新数组
// ES5 a =list[0], rest =list.slice(1)// ES6 [a, ...rest] =list下面是另外一些例子。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// []
将字符串转为真正的数组
[...'hello'] // ["h","e","l","l","o"]
将实现了 Iterator 接口的对象转为数组
varnodeList =document.querySelectorAll('div');vararray = [...nodeList];