上來就是暴力結論,可先看案例:
(1)該類數組對象必須具有length屬性,用於指定數組的長度。如果沒有length屬性,那么轉換后的數組是一個空數組。
(2)該類數組對象的屬性名必須為數值型或字符串型的數字(該類數組對象的屬性名可以加引號,也可以不加引號)
舉個例子:
let array = { 0: 'name', 1: 'age', 2: 'sex', //注意這些屬性名的類型 是數值型 3: ['user1','user2','user3'], 'length': 4 //注意這里的length } let arr = Array.from(array ) console.log(arr) // ['name','age','sex',['user1','user2','user3']]
如果將上面的length去掉,則返回一個空數組
如果將代碼修改一下,仍具有length屬性,但是對象的屬性名不再是數字類型的,而是其他字符串型的
let array = { 'name': 'name', 'age': 'age', 'sex': 'sex', 'user': ['user1','user2','user3'], 'length': 4 } let arr = Array.from(array ) console.log(arr)
打印結果如下:是一個長度為4 的數組,元素均為undefined。
所以能得出結論:
(1)該類數組對象必須具有length屬性,用於指定數組的長度。如果沒有length屬性,那么轉換后的數組是一個空數組。
(2)該類數組對象的屬性名必須為數值型或字符串型的數字
該類數組對象的屬性名可以加引號,也可以不加引號
還有一些功能:
1.將Set解構的數據轉換為數組
let arr = [1,2,3,4,5,6,7,8,9] let set = new Set(arr) console.log(Array.from(set)) // [1,2,3,4,5,6,7,8,9]
2.Array.from還可以接受第二個參數,作用類似於數組的map方法,用來對每個元素進行處理,將處理后的值放入返回的數組。如下:
let arr = [1,2,3,4,5,6,7,8,9] let set = new Set(arr) console.log(Array.from(set, item => item + 1)) // [2,3,4,5,6,7,8,9,10]
3.將字符串轉換為數組
let str = 'hello world!'; console.log(Array.from(str)) // ["h", "e", "l", "l", "o", " ", "w", "o", "r", "l", "d", "!"]