-1

我有一个从 API 获取 JSON 的函数(使用 PHP 获取)。我不知道我会按payload.time. JSON 是随机顺序的,所以.reverse()没有任何好处。我想知道如何按时间顺序对以下 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 + '">☺&lt;/li>';
      if(price !== "-") $('#donors').append(el);

    });
}
4

1 回答 1

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')

注意:代码片段未经测试。

于 2012-12-24T07:04:52.777 回答