我有一个像这样的数组:
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 个:
- 积分
- 净胜球
- 进球
因此,在这种情况下,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/