2010-09-21 54 views
0

我有像在Mozilla火狐下面陣列在javascript

var abc = 
{ 
2: {label: "raju"}, 
10: {label: "samu"}, 
3: {label: "sidh"}, 
1: {label: "kat"}, 

}; 

for(var i in abc){ alert(i); } 

它提醒2,10,3,1的一段代碼。但在鉻它顯示1,2,3,10

但我的要求是第一個(如火狐中所示) 如何獲得相同的結果在鉻?

+0

可能重複[元素順序 - 爲(......)在JavaScript中環路(http://stackoverflow.com/問題/ 280713/elements-order-in-in-in-javascript) – bzlm 2010-09-21 10:17:55

+0

'for(var i in abc)'不是你想象的那樣(一個數組元素迭代器)。如果你使用一個普通的索引循環和一個正常的數組,你會得不到驚喜。 – bzlm 2010-09-21 10:19:50

回答

1

「for(var i in ...)」檢索項目的順序未定義。對於你必須使用一個數組的數組樣行爲;)的

var abc = [ 
    { nr: 2, label: "raju" }, 
    { nr: 10, label: "samu" }, 
    { nr: 3, label: "sidh" }, 
    { nr: 1, label: "kat" } 
]; 

for (var i = 0, length = abc.length; i < length; i++) 
    alert(abc[i].nr); 
+0

在'for ... in'循環中'hasOwnProperty'檢查通常是一個好主意:'if(abc.hasOwnProperty(i)){...} – 2010-09-21 10:32:51