0

我正在从已经按“sort_id”排序的服务器检索 JSON 响应。

响应文本 ==>

{
    "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”循环?或以这种方式打印接收到的数据的任何其他方式。

4

2 回答 2

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) } );
于 2013-01-27T02:38:48.130 回答
1

默认情况下,Javascript 属性是无序的,并且它们的迭代顺序在 javascript 引擎和实现之间将不一致。要拥有有序的属性,您需要有一个数组。

正如 thikinom 的回答所暗示的,要对属性进行排序,您可以将它们放入一个数组中。

于 2013-01-27T02:41:17.797 回答