Javascript 将有序JSON响应解析为无序对象
我正在从已经按“sort\u id”排序的服务器检索JSON响应 responseText==>Javascript 将有序JSON响应解析为无序对象,javascript,json,response,Javascript,Json,Response,我正在从已经按“sort\u id”排序的服务器检索JSON响应 responseText==> { "status": 1, "complete": 1, "list": { "178432351": { "item_id": "178432351", "sort_id": 0, }, "203720680": { "item_id": "203720
{
"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)
打印的数据完全无序。有没有办法按排序id顺序使用“for in”循环?默认情况下,Javascript属性是无序的,它们的迭代顺序在Javascript引擎和实现中不一致。要拥有有序属性,您需要有一个数组
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) } );
要对属性进行排序,您可以按照thikinom的回答将它们放入数组。这不会返回一个只包含ID的数组吗?@Adonis:不,每个
项都是一个对象。for(item in response.list){console.debug(typeof item);}
返回(5)字符串