Javascript 将有序JSON响应解析为无序对象

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

我正在从已经按“sort\u 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)

打印的数据完全无序。有没有办法按排序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)字符串