擴展運算符( spread )是三個點(...)。它好比 rest 參數的逆運算,將一個數組轉為用逗號分隔的參數序列。
1 console.log(...[1,2,3]); // 1 2 3 2 console.log(1,...[1,2,3],5); // 1 1 2 3 5
合並多個數組
通過push函數,將一個數組添加到另一個數組的尾部;有了擴展運算符,就可以直接將數組傳入push方法;
擴展運算符提供了數組合並的新寫法。
1 var arr1 = [0,1,2]; 2 var arr2 = [3,4,5]; 3 arr1.push(...arr2); // [0,1,2,3,4,5] 4 console.log(arr1);
1 var arr4 = ['a','b']; 2 var arr5 = ['c']; 3 var arr6 = ['d','e']; 4 // es5合並數組 5 arr4.concat(arr5,arr6); 6 // es6合並數組 7 var newArr = [...arr4,...arr5,...arr6]; 8 console.log(newArr);
簡化求出一個數組最大元素的寫法,由於 JavaScript 不提供求數組最大元素的函數,所以只能套用Math.max函數,將數組轉為一個參數序列,然后求最大值。有了擴展運算符以后,就可以直接用Math.max了。
1 console.log(Math.max(...[14,2,7])); // 14
擴展運算符賦值
如果將擴展運算符用於數組賦值,只能放在參數的最后一位,否則會報錯
1 const [first,...rest] = [1,2,3,4,5]; 2 console.log(first); // 1 3 console.log(rest); // [2,3,4,5] 4 5 // 如果將擴展運算符用於數組賦值,只能放在參數的最后一位,否則會報錯。 6 const [f,...r] = []; 7 console.log(f,r); // undfined,[] 8 9 const [f1,...r1] = ["foo"]; 10 console.log(f1,r1); // foo,[]