JS 对象的枚举在 Firefox 中似乎不一致。
代码:
var a = {"3":"a", "2":"b", "foo":"c", "1":"d"};
var str = "";
for(var n in a) { str += n + " = " + a[n] + "\n"; }
alert(str);
在 Windows 上使用 FF22 的结果:
1 = d
2 = b
3 = a
foo = c
预期结果(以及我在 Linux 上使用 FF20 得到的结果):
3 = a
2 = b
foo = c
1 = d
如何保持元素与插入的顺序相同?
我知道 ECMA 规范没有说明应该如何进行枚举,因此它不能被称为错误。但我需要按插入顺序排列的元素。(原因:我得到了一个 JSON 编码的哈希表,它是在服务器端排序的。直到最近,订单仍然保留,现在整个列表一团糟,因为它是按键排序的)