簡體   English   中英

JavaScript中的數組排序-比較IE8和Chrome的不同結果

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM