ES6拓展运算符

拓展运算符

定义:拓展运算符是三个点(…),将一个数组、类数组、字符串转为用逗号隔开的序列

1
2
3
4
5
let arr1=[1,2,3,,4];
console.log(...arr1);

let arr2=[1,2,3,[5,6,7],8]
console.log(...arr2)

注意:只能解构最外层的数组*,如果里面还有数组,还是会整体输出

合并数组

1
2
3
4
let arr1=[1,2,3];
let arr2=[4,5,6];
let arr3=[...arr1,...arr2];
console.log(arr3);//[1,2,3,4,5,6];

将字符串转化为数组

1
2
3
let str="前端无忧网";
let arr=[...str];
console.log(arr);//["前","端","无","忧","网"]

将DOM节点类数组转换为数组

1
2
3
4
5
6
7
8
9
10
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>
let list=document.querySelectorAll("li");
let arr=[...list];
console.log(arr);//[li,li,li,li,li]

数组的深拷贝

1
2
3
4
5
6
7
let arr1=[1,2,3];
let arr2=arr1;
let arr3=[...arr1];
arr1[0]=10;
console.log(arr1);//[10,2,3]
console.log(arr2);//[10,2,3]
console.log(arr3);//[1,2,3]

数组的深拷贝就是要遍历数组的每一项,直接赋值,两个数组的你地址在内存中是同一个,其中一个的改变会影响另一个,用拓展运算符就不会了

##替代数组的apply方法

1
2
3
4
5
6
7
8
9
10
function sum(x,y,z){
return x+y+z
};
var args=[4,5,6];

<!-- ES5方法 -->
console.log(sum.apply(null,args));//15

<!-- ES6方法 -->
console.log(sum(...args));//15

求数组的最大值

1
2
3
4
5
var arr=[14,3,77];
<!-- ES5方法 -->
console.log(Math.max.apply(null,arr));//77
<!-- ES6方法 -->
console.log(Math.max(...arr));//77

上一篇
es6新版教程3-解构赋值 es6新版教程3-解构赋值
数组的解构赋值以前,为变量赋值,我们只能直接赋值,如下代码123let a=1;let b=2;let c=3; 而现在,可以用解构赋值的方式来赋值1234let [a,b,c]=[1,2,3]console.log(a);//1conso
2017-01-15
下一篇
es6新版教程2-let和const新的声明方式 es6新版教程2-let和const新的声明方式
以前,我们都是通过var来申明变量,es6对声明进行了拓展。 var声明12var a="webwuyou"console.log(a) var声明的是全局变量,12345var a=2;{ var a=3;&
2017-01-13