具有前导零属性排序的javascript关联数组

时间:2011-04-26 01:09:18

标签: javascript arrays

我有以下JSON:

var somearr = {
"08":{val:blabla,val:blabla},
"09":{val:blabla,val:blabla},
"10":{val:blabla,val:blabla},
"11":{val:blabla,val:blabla},
...
"14":{val:blabla,val:blabla}
}

做的时候

 for (  i in somearr) {   
   console.log(i);
 }

我得到了这个序列:10, 11, ... 14, 08, 09

如何实现原始排序顺序?

提前感谢您的帮助。

3 个答案:

答案 0 :(得分:2)

你定义的somearr的类型是map(dict)而不是数组。 您可以使用[]例如

来定义数组
var somearr = [{val:blabla,val:blabla}, {val:blabla,val:blabla}, {val:blabla,val:blabla}];
for(var i in somearry) {
    console.log(i);
}

你会得到你想要的东西

答案 1 :(得分:1)

将键放入数组中,对其进行排序,然后对其进行迭代,然后从对象中拉出来。

使用Underscore.js:

var keys = _.keys(somearr).sort();
_.each(keys, function(key) {
  var value = somearr[key];
  console.log(value);
});

答案 2 :(得分:1)

使用for...in的属性的迭代顺序被指定为特定于实现,并且浏览器确实有所不同。因此,如果需要特定顺序,则必须使用数组,然后可以使用for循环对数组进行排序和迭代。这是你如何做到的:

var keys = [];
for (var name in somearr) {
    if (somearr.hasOwnProperty(name)) {
        keys.push(name);
    }
}

keys.sort();

for (var i = 0; i < keys.length; ++i) {
    console.log(keys[i] + "=>" + somearr[keys[i]]);
}