我有这样一个数组:
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}
];
Run Code Online (Sandbox Code Playgroud)
价值观是:
p - >积分
gs - >目标得分
ga - >目标反对
gd - >目标差异
这是事情:
我需要根据这个规则消除其中的两个:
所以在这种情况下,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
);
Run Code Online (Sandbox Code Playgroud)
然后"消灭"最后两个,只需将它们拼接起来:
arr.splice(-2, 2);
Run Code Online (Sandbox Code Playgroud)
那就是:)
| 归档时间: |
|
| 查看次数: |
34 次 |
| 最近记录: |