1. 程式人生 > >物件轉換為陣列的方法

物件轉換為陣列的方法

Array.from方法用於將兩類物件轉為真正的陣列:類似陣列的物件( array-like object )和可遍歷( iterable )的物件(包括 ES6 新增的資料結構 Set 和Map )。

[javascript] view plain copy
  1. let arrayLike = {  
  2. '0''a',  
  3. '1''b',  
  4. '2''c',  
  5. length: 3  
  6. };  
  7. // ES5 的寫法
  8. var arr1 = [].slice.call(arrayLike); // ['a', 'b', 'c']
  9. // ES6 的寫法
  10. let arr2 = Array.from(arrayLike); // ['a', 'b', 'c']
  11. // NodeList 物件
  12. let ps = document.querySelectorAll('p');  
  13. Array.from(ps).forEach(function (p) {  
  14. console.log(p);  
  15. });  
  16. // arguments 物件
  17. function foo() {  
  18. var args = Array.from(arguments);  
  19. // ...
  20. }  
  21. Array.from('hello')  
  22. // ['h', 'e', 'l', 'l', 'o']
  23. let namesSet = new Set(['a''b'])  
  24. Array.from(namesSet) // ['a', 'b']
  25. Array.from({ length: 3 });  
  26. // [ undefined, undefined, undefined ]

Array.from還可以接受第二個引數,作用類似於陣列的map方法,用來對每個元素進行處理,將處理後的值放入返回的陣列。

[javascript] view plain copy
  1. Array.from(arrayLike, x => x * x);  
  2. //  等同於
  3. Array.from(arrayLike).map(x => x * x);  
  4. Array.from([1, 2, 3], (x) => x * x)  
  5. // [1, 4, 9]

值得提醒的是,擴充套件運算子(...)也可以將某些資料結構轉為陣列。 [javascript] view plain copy
  1. // arguments 物件
  2. function foo() {  
  3. var args = [...arguments];  
  4. }  
  5. // NodeList 物件
  6. [...document.querySelectorAll('div')]