我有一个看起来像这样的js对象:
var obj = {
'1001' : [...data...],
'1002' : [...data...],
'1003' : [...data...],
'1004' : [...data...],
'1005' : [...data...],
'1006' : [...data...],
}
当我这样做时:
for (var i in obj) {
console.log(i);
}
我在Firefox中获得了不可预测的订单。换句话说,对于大多数浏览器,我将以下内容记录到控制台:
1001
1002
1003
1004
1005
1006
但Firefox更像是这样:
1006
1003
1001
1002
1005
1004
如何浏览对象的数组并确保我按照正确的顺序获取它们。
另外,为了使其更复杂,密钥可能不是按顺序排列,也可能不是全部。
答案 0 :(得分:8)
对象键没有已定义的顺序。您必须明确sort
:
Object
.keys(obj)
.sort()
.forEach(function (key) {
console.log(key);
});
答案 1 :(得分:1)
如果您需要根据插入顺序进行迭代,可以使用Map
代替对象。
var m = new Map();
m.set(1001, ..);
m.set(1002, ..);
for(var [key, val] of m){
//iteration in order of insertion
}