2012-12-24 68 views
-1

我有一個函數從一個API(用PHP提取)獲取JSON。我不知道我會按payload.time排序數據。 JSON是隨機排列的,所以.reverse()不會做任何好的以太。我想知道如何按時間順序排列下面的JSON?按時間排序JSON

{ 
    "code":0, 
    "payload":[ 
     { 
     "time":1349661897, 
     "packages":[ 
      "49381" 
     ], 
     "ign":"player1", 
     "price":"15.99", 
     "currency":"USD" 
     }, 
     { 
     "time":1354504024, 
     "packages":[ 
      "33109" 
     ], 
     "ign":"player2", 
     "price":"6.99", 
     "currency":"USD" 
     } 
} 

這裏是我的JS:

var Donors = function(api) { 

    this.list = api; 

    $.each(this.list.payload.slice(0, 25), function(i, donor) { 
    var ign = donor.ign, 
     price = donor.price, 
     currency = donor.currency, 
     el = '<li id="' + ign + '" class="player big" data-player="' + ign + '" title="'+ ign + ' // ' + price + ' ' + currency + '">☺</li>'; 
     if(price !== "-") $('#donors').append(el); 

    }); 
} 

回答

0

您可以編寫一個函數來排序JSON陣列:

function sortBy(jsonArray, key){ 
    if(jsonArray){ 
     var sortedArray = jsonArray.sort(function(left, right) { 
         //array.sort is buit-in function 
      var a = left[key]; 
      var b = right[key]; 
      if (a !== b) { 
       if (a > b || a === void 0) return 1; 
       if (a < b || b === void 0) return -1; 
      } 
      return 0; 
     }); 
     return sortedArray; 
    } 
} 

調用這個函數有:

sortBy(payload, 'time') 

注意:代碼片段未經測試。

+0

請問jsonArray是api參數傳遞的參數嗎?關鍵是payload.time? – devs

+0

你必須在你的情況下調用'sortBy(this.list.payload,'time')''。 –

+0

我不知道在哪裏id'把這個在我的功能。 $ .each()之前或之後。我嘗試了兩種,但沒有排序。 – devs