[英]Array ordering in javascript - different results comparing IE8 and Chrome
數組(注意項目順序):
{
"5":{
"Title":"Title A",
"Desc":"Description A"
},
"15":{
"Title":"Title B",
"Desc":"Description B"
},
"10":{
"Title":"Title C",
"Desc":"Description C"
},
"1":{
"Title":"Title D",
"Desc":"Description D"
},
"20":{
"Title":"Title E",
"Desc":"Description E"
}
}
現在,如果在chrome或IE9上運行,下面的js代碼確實會改變順序。
for ( var i in data ) {
alert(JSON.stringify(data[i]));
}
IE8保留原始訂單,而較新的瀏覽器將訂單更改為1,5,10,15,20。
知道為什么會這樣嗎? 是否可以在較新的瀏覽器中保留原始訂單?
非常感謝,盧克
你在那里得到的不是陣列。 它只是一個對象,屬性的顯示順序是不確定的。
編輯 —有趣的事實:該規范說,如果實現決定發布for ... in
語句中的某些特定順序,則Object.keys()
必須遵循相同的順序規則。 但是,不需要這樣的規則。 規范並沒有詳細說明實現的“不確定性”,但是對我而言,一個好的經驗法則是對代碼進行編碼,就好像該命令可以被主動隨機化:-)
你有什么不是一個數組,而是一個對象。 對象沒有任何訂單。 瀏覽器以所需順序返回鍵。
如果你想要一些固定的順序,把你的對象放到一個數組中:
{
"objects": [
{
"id": "5",
"Title":"Title A",
"Desc":"Description A"
},
{
"id": "15",
"Title":"Title B",
"Desc":"Description B"
},
{
"id": "10",
"Title":"Title C",
"Desc":"Description C"
},
{
"id": "1",
"Title":"Title D",
"Desc":"Description D"
},
{
"id": "20"
"Title":"Title E",
"Desc":"Description E"
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.