javascript - 在 Javascript 中遵循此规则从数组中获取前 2 支球队

标签 javascript

我有一个像这样的数组:

var arr = [
    {id: 1, p: 7, gs: 11, ga: 7, gd: 4},
    {id: 2, p: 4, gs: 10, ga: 8, gd: 2},
    {id: 3, p: 3, gs: 7, ga: 9, gd: -2},
    {id: 4, p: 3, gs: 5, ga: 9, gd: -4}
];

值为:

p --> 积分

gs --> 进球数

ga --> 进球数

gd --> 净胜球

<小时/>

事情是这样的:

我需要根据以下规则消除其中 2 个:

  1. 积分
  2. 净胜球
  3. 进球

因此,在这种情况下,id[1]id[2] 在获得比其他两个更多的分数之前就通过了。

但是,如果 id[2]id[3] 得分相同,您就必须考虑净胜球。净胜球最大的球队晋级。

但是,也可能有同样的净胜球,但其中一方进球多,则进球多的球队晋级。

最后,如果他们的进球数、净胜球数和积分相同,则通过 Math.random() 来决定决胜局。

我不知道如何处理这个问题,因为可能有很多情况。有没有办法在不单独检查每个案例的情况下做到这一点?

最佳答案

只需按照标准对它们进行排序即可:

arr.sort((a, b) => 
  b.p  - a.p  ||
  b.gd - a.gd ||
  b.gs - a.gs ||
  Math.random() - 0.5
);

然后“消除”最后两个,只需将它们拼接起来即可:

arr.splice(-2, 2);

就是这样:)

关于javascript - 在 Javascript 中遵循此规则从数组中获取前 2 支球队,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50280521/

相关文章:

javascript - 单击浏览器后退按钮时隐藏加载 gif?

javascript - jQuery 如果鼠标不移动

javascript - 如何在node js中查找字符串中的图像标签

javascript - Recharts 不在 LineBarAreaComposedChart React 上显示负值

javascript - 将图像从表单保存到本地存储并存储/加载它

javascript - CSS 中可以自定义混合颜色吗?

javascript - Math.ceil 到位置 1 最接近的五

javascript - jQuery 中的 $().ready() 是否在所有脚本文件加载后触发?

javascript - 函数如何在 JavaScript 中工作

javascript - 将鼠标移到另一个div中的另一个元素上时如何更改div样式?