JavaScript:將類陣列轉換成陣列的幾種方式
阿新 • • 發佈:2018-12-15
首先說說什麼是類陣列,類陣列有幾個組成部分:
- 屬性要為索引(數字)。
- 必須有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變數(儲存傳入的引數)也是一個類陣列物件。