【问题标题】:Sort array by two values in JavaScript [duplicate]在JavaScript中按两个值对数组进行排序[重复]
【发布时间】:2016-12-30 15:26:00
【问题描述】:

我喜欢对 2 个值进行排序,首先是最高的检票口,然后是经济

var player = [  
    {"player_id":45,"wickets":3,"economy":"8.00"},
    {"player_id":11,"wickets":3,"economy":"10.25"}, 
    {"player_id":22,"wickets":3,"economy":"2.00"},  
    {"player_id":34,"wickets":3,"economy":"6.25"},  
    {"player_id":56,"wickets":7,"economy":"6.51"},  
    {"player_id":78,"wickets":6,"economy":"7.10"}
] ;   
function SortByID(x,y) {
    return ((x.wickets == y.wickets) ? 0 : ((x.wickets < y.wickets) ? 1 : -1 ));
    return ((x.economy == y.economy) ? 0 : ((x.economy > y.economy) ? -1 : 1 ));      
}

player.sort(SortByID);

结果应该是:

  56 - 7 - 6.51
  78 - 6 - 7.10
  22 - 3 - 2.00
  34 - 3 - 6.25
  45 - 3 - 8.00
  11 - 3 - 10.25

【问题讨论】:

    标签: javascript arrays sorting


    【解决方案1】:

    使用logical or (||),这将有助于在两个值相同时评估第二个排序选项(差异是0,这是假值)。

    var player = [{
      "player_id": 45,
      "wickets": 3,
      "economy": "8.00"
    }, {
      "player_id": 11,
      "wickets": 3,
      "economy": "10.25"
    }, {
      "player_id": 22,
      "wickets": 3,
      "economy": "2.00"
    }, {
      "player_id": 34,
      "wickets": 3,
      "economy": "6.25"
    }, {
      "player_id": 56,
      "wickets": 7,
      "economy": "6.51"
    }, {
      "player_id": 78,
      "wickets": 6,
      "economy": "7.10"
    }];
    
    function SortByID(x, y) {
      return y.wickets - x.wickets || x.economy - y.economy;
    }
    
    player.sort(SortByID);
    
    console.log(player);

    【讨论】:

      猜你喜欢
      • 2014-12-02
      • 1970-01-01
      • 2011-06-01
      • 1970-01-01
      • 2021-11-14
      • 2013-07-26
      • 2016-03-13
      • 2014-08-25
      相关资源
      最近更新 更多