我有以下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
如何实现原始排序顺序?
提前感谢您的帮助。
答案 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]]);
}