2011-10-03 35 views
1

在Firefox中,輸出按字母順序排列(這是它們聲明的順序)。在IE和Chrome中,它們是數字。所有最新版本。什麼是這個Javascript數組的正確排序?

這是正確的嗎?

<html> 
<head></head> 
<body> 
<script type="text/javascript"> 
function makeArray() 
{ 
    var array = [{5:'Five',4:'Four',1:'One',3:'Three',2:'Two'}]; 
    var msg = ''; 

    for (var val in array[0]) 
    { 
     msg = msg + val; 
    } 
    alert(msg); 
} 
</script> 
<input type="button" onClick="makeArray();" value="Press Me" /> 
</body> 
</html> 

背後的故事...... 在SpiraTeam(我們目前的bug跟蹤系統)許多列表(用戶,模塊等)的使用格式類似於上面的命令。除非使用FireFox,否則這會使查找內容變得非常困難和煩人。我的興趣純粹是學術性的,我只問,因爲我想知道哪個瀏覽器是正確的。

+0

有實際上只有一個項目在數組中 - 並且具有5個屬性的對象。所以我認爲用這個問題來解釋的正確方法是「對象中屬性的正確順序是什麼?」 – selbie

+0

你可以在這裏找到更多關於迭代順序的信息http://stackoverflow.com/questions/280713/elements-order-in-a-for-in-loop/280861#280861 –

+2

重複嗎? http://stackoverflow.com/questions/280713/elements-order-in-a-for-in-loop –

回答

5

其實你問:當使用for循環迭代時,對象字面值內的屬性順序是什麼?這裏的數組並不重要。

答案是:它是未指定的。大多數情況下,它將與您在代碼中看到的一樣,但不能保證。

這個問題已經被問數百次:

+0

謝謝,我只是不知道要搜索什麼 - 我不是Web開發人員:) – DaveShaw

1

您的問題似乎是,你是不是遍歷數組,而是一個對象...

ECMA似乎並沒有在第5步定義如何去這個...(字母數字,等)

+0

這不是我這樣做 - 這只是我堅持使用的bug跟蹤器的代碼。 – DaveShaw

相關問題