Luk*_*e G 2 javascript arrays google-chrome cross-browser internet-explorer-8
数组(注意项目顺序):
{
"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"
}
}
Run Code Online (Sandbox Code Playgroud)
现在,如果在chrome或IE9上运行,下面的js代码确实会改变顺序.
for ( var i in data ) {
alert(JSON.stringify(data[i]));
}
Run Code Online (Sandbox Code Playgroud)
IE8保留原始订单,而较新的浏览器将订单更改为1,5,10,15,20.
知道为什么会这样吗?是否可以在较新的浏览器中保留原始订单?
非常感谢,卢克
你在那里得到的不是阵列.它只是一个对象,属性的呈现顺序是不确定的.
编辑 - 有趣的事实:规范说如果一个实现决定在for ... in语句中宣传某些特定的排序,那么Object.keys()必须遵守相同的排序规则.但是,不需要这样的规则.规范没有详细说明实现的"未定义"如何,但对我来说,一个好的经验法则就是编码好像订单可能被主动随机化:-)