首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JS联赛综合排序头2头

JS联赛综合排序头2头
EN

Stack Overflow用户
提问于 2017-01-23 15:17:29
回答 1查看 329关注 0票数 2

就我所能搜索的堆栈溢出答案而言,这不是的“正常”列表排序问题.

我有一个在javascript (角2)中使用的联赛表im,我可以根据赢球、玩的游戏等来分类:

代码语言:javascript
复制
standings.sort(function(a,b) {
 return b.won - a.won || a.played - b.played;
});

但是,我的排序规则需要更深入地按照以下方式进行排序:

1)多数获胜

2)玩得最少的游戏

3)如果有平局,计算出头球对头球游戏获胜,然后在头球与头球游戏中得分差异:

  • 3- a)在头对头的“胜利”排序只有在任何平手的立场从第1)和第2) )。
  • 3- b)头对头的“点差”排序仅在平手位置之间。

复杂的部分(至少对我来说!)我只需要比较一下头对头的胜利和分数的差异,在一个共同的位置上从第1和第2点),这些球队将是什么,只有在执行时才会知道。

我想不出任何一种解决办法,更别提优雅的解决办法了!下面的代码显然不起作用,我只是尝试用它来表示我想要实现的目标:

代码语言:javascript
复制
standings.sort(function(a,b) {
 return b.won - a.won || a.played - b.played || 
 a.head2heads[TIED_TEAM_KEY].wins - b.head2heads[TIED_TEAM_KEY].wins || 
 a.head2heads[TIED_TEAM_KEY].diff- b.head2heads[TIED_TEAM_KEY].diff;
});

在排名(我的联赛积分榜)中,我得到了每支球队的头头是道的胜利和得分差异。例如,每个名次对象看起来如下:

代码语言:javascript
复制
{   "teamname": "name",
    "teamcode": "code",
    "won": "8",
    "lost": "10",
    "played": 18,
    "pointsScored": 1264,
    "pointsAgainst": 1345,
    "pointsDiff": -81,
    "head2": { "OPP_NAME_A": {}, "OPP_NAME_B": {}, ... }

因此,数据是手头的,以提取个人的头对头的结果。只是需要优雅按照上面的标准进行排序。目前排名只有16支球队(这不太可能改变)。因此,即使是缓慢冗长的解决方案也是有帮助的!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-24 10:50:37

最后,我想出了这个问题,排序函数看起来如下:

代码语言:javascript
复制
standings.sort(function(a,b) {
 return b.won - a.won || a.played - b.played || 
 b.head2[a.teamname].home.head2wins - a.head2[b.teamname].home.head2wins || 
 b.head2[a.teamname].home.head2diff - a.head2[b.teamname].home.head2diff;
});

我猜这本身并没有那么复杂,只是在这么多的层下隐藏了这么多的数据,让人感到困惑!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41809633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档