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

Javascript プロパティはデフォルトでは順不同であり、それらが反復される順序は、JavaScript エンジンおよび実装間で一貫していません。プロパティを順序付けするには、配列が必要です。

プロパティを並べ替えるには、thikinom の回答が示唆するように、それらを配列に入れることができます。

于 2013-01-27T02:41:17.797 に答える
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 に答える