2012-12-24 45 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