簡體   English   中英

根據數組長度對json排序

[英]Sort json based on length of an array

我正在嘗試對使用Jquery.ajax調用的供稿進行排序。 我正在嘗試按Feed中數組中值的數量對其進行排序。

例如,在此供稿中,我想按NFL球隊的降序排序,因此將其重新排序到馬薩諸塞州的加利福尼亞州,新澤西州:

[
   {
      "title":"New Jersey",
      "NFLteams":[
         {
            "Name":"Jets",
            "Conference":"AFC",
         },
         {
            "Name":"Giants",
            "Conference":"NFC",
         }
         ]
   },
   {
      "title":"Massachusetts",
      "NFLteams":[
         {
            "Name":"Patriots",
            "Conference":"AFC",
         }
         ]
   },
   {
      "title":"California",
      "NFLteams":[
         {
            "Name":"Raiders",
            "Conference":"AFC",
         },
         {
            "Name":"49ers",
            "Conference":"NFC",
         },
         {
            "Name":"Chargers",
            "Conference":"AFC",
         }
         ]
   }
]

我已經嘗試過這樣的代碼(從該線程對JavaScript對象數組進行排序 ),但是它不起作用(即使我將其設置為NFLteams.length):

   var sort_by = function(field, reverse, primer){
   var key = function (x) {return primer ? primer(x[field]) : x[field]};

   return function (a,b) {
      var A = key(a), B = key(b);
      return ( (A < B) ? -1 : ((A > B) ? 1 : 0) ) * [-1,1][+!!reverse];                  
   }
   }
   data.sort(sort_by('NFLteams', false, function(a){return a.toUpperCase()}))    

關於如何按數組中的值#排序的任何建議? 感謝任何可以幫助或指出正確方向的人。

如果使用數組的length屬性,則您的方法似乎有效:

data.sort(sort_by('NFLteams', false, function(a){return a.length}))

參見JsBin: http ://jsbin.com/eWafEMe/1/edit

像這樣的簡單功能就可以解決問題。

data.sort(function(a,b){
     return b.NFLteams.length - a.NFLteams.length;
});

http://jsfiddle.net/x9d2J/

在您的排序函數中,將比較結果反向以降序返回:

.sort(function(team1, team2) {
    return team2.NFLteams.length - team1.NFLteams.length;
});

或將結果乘以-1:

.sort(function(team1, team2) {
    return -1 * (team1.NFLteams.length - team2.NFLteams.length);
});

查看此小提琴的控制台輸出

您可以嘗試underscore's sortBy

_.sortBy(i, function(team){ return team['NFLteams'].length }).reverse();

i是你的輸入數組。

小提琴: http//jsfiddle.net/kMbsW/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM