2013-11-20 77 views

回答

1

試試這個:

var o = { ... }; // your object 
var oArr = []; 
for (var i in o) { 
    if (parseInt(i) == i) { 
     oArr[parseInt(i)] = o[i]; 
    } 
} 

注意,它不會接受那些非數字鍵。

0

你不應該這樣做, 1.你不確定最大指數值有多大。 2.可能會有很多空白,數組中的那些索引將爲空,因此,只需使用索引號的字符串轉換並在相同的對象中查找即可。

var o = {"1": 1, "2": 2, "5": 5}; 
var index = 5; 
o[index.toString()] // gives 5 
+0

不需要'toString'。 – georg

1

如果你有一個適當的長度屬性,它真的很容易:

var o = {"1": 1, "2": 2, "5": 5, 'length' : 6}; 
o = Array.prototype.slice.call(o); // [undefined, 1, 2, undefined, undefined, 5] 

如果你沒有length屬性,你可以計算它:

var o = {"1": 1, "2": 2, "5": 5};  

o.length = Object.keys(o).reduce(function(max,key){ 
    return isNaN(key) ? max : Math.max(max, +key); 
},-1) + 1; 

o = Array.prototype.slice.call(o); // [undefined, 1, 2, undefined, undefined, 5] 

一件事但要注意的是,當你訪問一個對象的屬性時,它總是被轉換成一個字符串,所以下面的例子對你的例子很有用,即使o不是一個數組:

var o = {"1": 1, "2": 2, "5": 5}; 
o[1] // 1 
o[2] // 2 
o[5] // 5 
o[0] // undefined 
相關問題