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