### 擴展運算符
1. ...將數組轉換為用逗號分隔的參數序列:...[1,2,3] => 1,2,3 [...doucment.querySelectorAll('div')] => [ div, div, div ]
2. ...后可以跟表達式:...( x > 1 ? [ 1 ] : [ ] ) 空數據不產生任何效果
3. 替代apply函數調用時的數組傳參
4. 求最大值:Math.max( ...[1,2,3] )
6. 合并數組:[ ..arr1, ...arr2 ] [ 1,2,3 ].push( ...[ 4,5,6 ] )
7. 復制數組 const arr1 = [ ...arr2 ]
8. 與解構賦值一起使用時,擴展運算符只能放在最后:const [ a, ...b ] = [ 1,2,3,4 ] a:1 b:[ 2,3,4 ]
9. 轉換字符串:[ ...'hello' ] => [ h,e,l,l,o ]
10. 任何部署了Iterator接口的數據結構都可以轉換為數組,只要部署了Iterator接口,就可以使用擴展運算符
### 數組擴展
1. Array.from():將類數組對象和具有iterator接口的對象轉換為真正的數組
類數組對象最大的特征,是擁有length屬性,只要有這個屬性就可以轉換為真正的數組:arguments || NodeList( DOM集合 )
Array.from可以接收第二個參數:為一個函數,相當于map方法,對轉換的每個類數組元素進行處理
2. Array.of():創建數組,解決Aarry()函數創建數組時因參數個數不同產生的差異結果
[ ].find( fn ):查找第一個符合條件的元素
[ ].findIndex( fn ):查找第一個符合條件的元素索引
3. Array.includes() Array.keys() Array.values() Array.entries()
4. [ ].flat():將多維數組轉換為一維數組,傳入Infinity將多級數組轉平,默認只轉一級
5. 數組方法較多,ES5 ES6各個方法對于數組內的空位處理不一致,需要避免這個問題