7.ES6-Array.from()和Array.of()
阿新 • • 發佈:2021-10-28
1.Array.from
方法用於將兩類物件轉為真正的陣列:類似陣列的物件(array-like object)和可遍歷(iterable)的物件(包括 ES6 新增的資料結構 Set 和 Map)。
下面是一個類似陣列的物件,Array.from
將它轉為真正的陣列。
let arrayLike = { '0': 'a', '1': 'b', '2': 'c', length: 3 }; // ES5的寫法 var arr1 = [].slice.call(arrayLike); // ['a', 'b', 'c'] // ES6的寫法 let arr2 = Array.from(arrayLike); //['a', 'b', 'c']
只要是部署了 Iterator 介面的資料結構,Array.from
都能將其轉為陣列。
Array.from('hello') // ['h', 'e', 'l', 'l', 'o'] let namesSet = new Set(['a', 'b']) Array.from(namesSet) // ['a', 'b']
上面程式碼中,字串和 Set 結構都具有 Iterator 介面,因此可以被Array.from
轉為真正的陣列。
2.Array.of()
Array.of()
方法用於將一組值,轉換為陣列。
Array.of(3, 11, 8) // [3,11,8]Array.of(3) // [3] Array.of(3).length // 1
這個方法的主要目的,是彌補陣列建構函式Array()
的不足。因為引數個數的不同,會導致Array()
的行為有差異。
Array() // [] Array(3) // [, , ,] Array(3, 11, 8) // [3, 11, 8]
上面程式碼中,Array()
方法沒有引數、一個引數、三個引數時,返回的結果都不一樣。只有當引數個數不少於 2 個時,Array()
才會返回由引數組成的新陣列。引數只有一個正整數時,實際上是指定陣列的長度。
Array.of()
基本上可以用來替代Array()
或new Array()
Array.of() // [] Array.of(undefined) // [undefined] Array.of(1) // [1] Array.of(1, 2) // [1, 2]
Array.of()
總是返回引數值組成的陣列。如果沒有引數,就返回一個空陣列。