1. 程式人生 > >JavaScript:將類陣列轉換成陣列的幾種方式

JavaScript:將類陣列轉換成陣列的幾種方式

首先說說什麼是類陣列,類陣列有幾個組成部分:

  • 屬性要為索引(數字)。
  • 必須有length屬性,
  • 最好加上push和splice方法

對於一個普通的物件來說,如果它的所有property名均為正整數,同時也有相應的length屬性,那麼雖然該物件並不是由Array建構函式所建立的,它依然呈現出陣列的行為,在這種情況下,這些物件被稱為類陣列物件

類陣列的length屬性會隨著陣列成員的增減而發生變化,同時又從Array建構函式中繼承了一些用於進行陣列操作的方法。

var obj = {
    "0" : 'a',
    "1" : 'b',
"2" : 'c', "length" : 3, "push" : Array.prototype.push, "splice" : Array.prototype.splice }

前面已經說了,類似陣列的物件,本質特徵只有一點,即必須有length屬性。因此,任何有length屬性的物件,都可以通過Array.from方法轉為陣列。

let arrayLike = {
    '0' : 'a',
    '1' : 'b',
    '2' : 'c',
    length : 3
};
let arr1 = Array.prototype.slice.
call(arrayLike); let arr2 = [].slice.call(arrayLike); let arr3 = Array.from(arrayLike);

注意

在瀏覽器環境中,document.getElementsByTagName()語句返回的就是一個類陣列物件。

在function呼叫中,function程式碼內的arguments變數(儲存傳入的引數)也是一個類陣列物件。