如何以一致的顺序浏览对象的键?

时间:2015-10-06 22:54:32

标签: javascript arrays

我有一个看起来像这样的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

如何浏览对象的数组并确保我按照正确的顺序获取它们。

另外,为了使其更复杂,密钥可能不是按顺序排列,也可能不是全部。

2 个答案:

答案 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
}