【发布时间】:2013-01-03 01:54:49
【问题描述】:
数组(注意项目的顺序):
{
"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。
知道为什么会发生这种情况吗?是否可以在较新的浏览器中保留原始顺序?
非常感谢,卢克
【问题讨论】:
-
那不是数组。那是一个对象。对象没有顺序。
-
+1 为例。我一直想看到一个证据,证明属性顺序没有保留在对象中。
-
对于那些好奇的人来说,JavaScript 对象基本上是作为字典/哈希表实现的。因此,未定义的排序。
标签: javascript arrays google-chrome internet-explorer-8 cross-browser