按时间排序JSON

时间:2012-12-24 06:38:46

标签: javascript jquery json sorting

我有一个从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 + '">☺</li>';
      if(price !== "-") $('#donors').append(el);

    });
}

1 个答案:

答案 0 :(得分: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')

注意:未对代码段进行测试。