ES6之Array.from()方法
阿新 • • 發佈:2018-02-11
轉換 作用 map 什麽 參數 數值 bsp post 結構
Array.from()方法就是將一個類數組對象或者可遍歷對象轉換成一個真正的數組。
那麽什麽是類數組對象呢?所謂類數組對象,最基本的要求就是具有length屬性的對象。
1、將類數組對象轉換為真正數組:
let arrayLike = { 0: ‘tom‘, 1: ‘65‘, 2: ‘男‘, 3: [‘jane‘,‘john‘,‘Mary‘], ‘length‘: 4 } let arr = Array.from(arrayLike) console.log(arr) // [‘tom‘,‘65‘,‘男‘,[‘jane‘,‘john‘,‘Mary‘]]
那麽,如果將上面代碼中length屬性去掉呢?實踐證明,答案會是一個長度為0的空數組。
這裏將代碼再改一下,就是具有length屬性,但是對象的屬性名不再是數字類型的,而是其他字符串型的,代碼如下:
let arrayLike = { ‘name‘: ‘tom‘, ‘age‘: ‘65‘, ‘sex‘: ‘男‘, ‘friends‘: [‘jane‘,‘john‘,‘Mary‘], length: 4 } let arr = Array.from(arrayLike) console.log(arr) // [ undefined, undefined, undefined, undefined ]
會發現結果是長度為4,元素均為undefined的數組
由此可見,要將一個類數組對象轉換為一個真正的數組,必須具備以下條件:
1、該類數組對象必須具有length屬性,用於指定數組的長度。如果沒有length屬性,那麽轉換後的數組是一個空數組。
2、該類數組對象的屬性名必須為數值型或字符串型的數字
ps: 該類數組對象的屬性名可以加引號,也可以不加引號
2、將Set結構的數據轉換為真正的數組:
let arr = [12,45,97,9797,564,134,45642] let set = new Set(arr) console.log(Array.from(set)) // [ 12, 45, 97, 9797, 564, 134, 45642 ]
Array.from
還可以接受第二個參數,作用類似於數組的map
方法,用來對每個元素進行處理,將處理後的值放入返回的數組。如下:
let arr = [12,45,97,9797,564,134,45642] let set = new Set(arr) console.log(Array.from(set, item => item + 1)) // [ 13, 46, 98, 9798, 565, 135, 45643 ]
3、將字符串轉換為數組:
let str = ‘hello world!‘; console.log(Array.from(str)) // ["h", "e", "l", "l", "o", " ", "w", "o", "r", "l", "d", "!"]
4、Array.from參數是一個真正的數組:
console.log(Array.from([12,45,47,56,213,4654,154]))
像這種情況,Array.from會返回一個一模一樣的新數組
ES6之Array.from()方法