es6數組可以用展開符。展開符「...」會將可迭代物件展開到其單獨的元素中,而所謂的可迭代對象就是任何能用「for of」循環進行遍歷的對象,例如數組、字串、Map 、Set;當展開符用於數組,可以將一個數組轉為用逗號分隔的參數序列。
本教學操作環境:windows7系統、ECMAScript 6版、Dell G3電腦。
展開符(擴充運算子) …
是ES6中引入的,將可迭代物件展開到其單獨的元素中,所謂的可迭代物件就是任何能用for of循環進行遍歷的對象,例如:陣列、字串、Map 、Set 、DOM節點等。
展開運算子(spread operator)允許一個表達式在某處展開。展開運算子在多個參數(用於函數呼叫)或多個元素(用於數組字面量)或多個變數(用於解構賦值)的地方可以使用。
es6展開符的使用(數組方面)
給定一個數組,想要將一個數組的成員複製到另一個數組中,該怎麼做?
const a = [1, 2]; const b = a; console.log(b); // [1, 2]
真有表面上這麼簡單嗎?試著修改一下a數組中的值
a[0] = 3; console.log(b); // [3, 2]
誒?怎麼我修改了a數組中的值,結果b數組中的值也變了?這裡涉及到的是堆疊的原理,就不具體展開說了,你只需要知道簡單地使用兩邊相等的方式是不能完成數組的複製的,這裡使用展開運算符就可以完成啦?
const a = [1, 2]; const c = [...a]; console.log(c); // [1, 2] a[0] = 3; console.log(c); // [1, 2]
const a = [1, 2]; const b = [3]; const c = [4, 5]; console.log([...a, ...b, ...c]); // [1, 2, 3, 4, 5] console.log([...c, ...a, ...b]); // [4, 5, 1, 2, 3] console.log([99, ...a, 24, ...b, ...c]); // [99, 1, 2, 24, 3, 4, 5]
前置知識:字串可以依照陣列的形式展開?
const name = 'Jae'; console.log(...name); // J a e
字串轉數組除了用split()
方法,也可以用展開運算子?
const name = 'Jae'; const name_string = [...name]; console.log(name_string); // ["J", "a", "e"]
為什麼要將類別數組轉換為數組呢?因為類別數組不能使用數組的方法,將其轉換過來對於一些對資料進行處理的需求就更加方便了~
function func() { console.log(arguments); } func(1, 2); // Arguments(2) [1, 2, callee: ƒ, Symbol(Symbol.iterator): ƒ] // 使用展开远算符 function func() { console.log([...arguments]); } func(1, 2); // [1, 2]
<!--HTML代码--> <p>1</p> <p>2</p> <p>3</p>
const a = document.querySelectAll("p"); console.log(a); // NodeList(3) [p, p, p] console.log([...a]); // [p, p, p]
【相關推薦:javascript影片教學、程式設計影片】
以上是es6數組中可以用展開符嗎的詳細內容。更多資訊請關注PHP中文網其他相關文章!