我正在从已经按“sort_id”排序的服务器检索JSON响应。
responseText ==>
{
"status": 1,
"complete": 1,
"list": {
"178432351": {
"item_id": "178432351",
"sort_id": 0,
},
"203720680": {
"item_id": "203720680",
"sort_id": 1,
},
"286082053": {
"item_id": "286082053",
"sort_id": 2,
},
"284062632": {
"item_id": "284062632",
"sort_id": 3,
},
"16137955": {
"item_id": "16137955",
"sort_id": 4
}
},
"since": 1359248876
}
var response = JSON.parse(request.responseText);
一旦我用JSON.parse将它解析成一个对象,然后尝试通过
打印每个项目的数据for(item in response)
打印的数据完全无序。有没有办法通过sort_id顺序使用“for in”循环?或以任何其他方式打印收到的数据。
答案 0 :(得分:1)
var arr = [];
for(var item in b.list) {
var obj = b.list[item];
var elem = {};
for(var prop in obj) {
elem[prop] = obj[prop];
}
arr.push(elem);
}
arr.sort(function(a,b) { return parseInt(a.sort_id) - parseInt(b.sort_id) } );
答案 1 :(得分:1)
默认情况下,Javascript属性是无序的,并且它们在javascript引擎和实现中的迭代顺序不一致。要订购属性,您需要有一个数组。
要对属性进行排序,您可以将它们放入数组中,正如thikinom的回答所示。