Javascript 如何确定哪支球队赢了,如果赢了加3分,如果输了加0分,如果平局加1分

Javascript 如何确定哪支球队赢了,如果赢了加3分,如果输了加0分,如果平局加1分,javascript,Javascript,我有一系列的比赛结果,我需要根据得分来决定给球队增加多少分。在这个例子中,法国得3分,克罗地亚得0分,英格兰和西班牙都得1分。这是如何实现的,有人能帮忙吗 const matches = [ { homeTeam: 'France', awayTeam: 'Croatia', score: '2:1', date: '18.01.2019' }, { homeTeam: 'England'

我有一系列的比赛结果,我需要根据得分来决定给球队增加多少分。在这个例子中,法国得3分,克罗地亚得0分,英格兰和西班牙都得1分。这是如何实现的,有人能帮忙吗

const matches = [
    {
        homeTeam: 'France',
        awayTeam: 'Croatia',
        score: '2:1',
        date: '18.01.2019'
    },
      {
        homeTeam: 'England',
        awayTeam: 'Spain',
        score: '1:1',
        date: '18.01.2019'
    }
];

function getRankings(games) {
    // ...implementation
} 

const footbalRankings = getRankings(matches);
console.log(footbalRankings);
输出应如下所示:

[
    { team: 'France', points:  3 }
    { team: 'England', points: 1 }
    { team: 'Spain', points: 1 }
    { team: 'Croatia', points: 0 }
]
const匹配=[
{
主队:“法国队”,
阿瓦泰姆:“克罗地亚”,
得分:“2:1”,
日期:2019年1月18日
}, {
主队:“英格兰队”,
阿瓦泰姆:“西班牙”,
得分:“1:1”,
日期:2019年1月18日
}
];
功能排名(游戏){
var秩={};
games.forEach(games=>{
var[homeScore,awayScore]=game.score.split(':');
如果(!ranks[game.homeTeam])ranks[game.homeTeam]={name:game.homeTeam,点数:0};
如果(!ranks[game.awayTeam])排名[game.awayTeam]={name:game.awayTeam,点数:0};
如果(homeScore>awayScore){
排名[比赛.主队].得分+=3;
}否则如果(awayScore>homeScore){
排名[game.awayTeam]。点数+=3;
}否则{
排名[比赛.主队].得分++;
排名[game.awayTeam]。积分++;
}
});
返回Object.values(ranks).sort((a,b)=>a.points>b.points-1:1);
} 
var footbalRankings=getRankings(比赛);

控制台日志(足球排名)
创建一个函数
calculatePoints()
,用于获取比赛分数并计算双方的分数

用于跟踪每个团队的总分<代码>映射还保留键的插入顺序

然后将
Map
的结果转换为所需的数组格式并按点排序

const matches=[{主队:法国,阿瓦耶坦:克罗地亚,比分:2:1,日期:2019年1月18日],{主队:英格兰,阿瓦耶坦:西班牙,比分:1:1,日期:2019年1月18日];
函数getRankings(匹配){
让排名=新地图();
让结果=[];
matches.forEach(match=>{
让totalA=排名。获得(比赛。主队)| | 0;
让totalB=排名。get(match.awayTeam)| 0;
让分数=计算点(匹配分数);
排名。设置(match.homeTeam,totalA+积分。homeTeam);
排名.set(match.awayTeam,totalB+points.awayTeam);
});
//将结果转换为数组格式。
for(让排名的[key,value]进入(){
结果。推送({“团队”:关键,“点”:值});
}
//按点对结果排序。
返回result.sort((a,b)=>b.points-a.points);
}
//获取比赛分数并计算两队的分数。
函数计算点(匹配分数){
让[teamA,teamB]=matchScore.split(“:”);
设点SA=0,点SB=0;
如果(团队A>团队B){
点sa=3;
}否则如果(团队A<团队B){
点SB=3;
}否则{
点sa=1;
点SB=1;
}
返回{“homeTeam”:pointsA,“awayTeam”:pointsB};
}
const footballRankings=获得排名(比赛);

控制台日志(足球排名)为什么法国队得3分而不是2分?@Markus ipse我假设这是一场足球赛(在某些国家是足球赛),获胜的球队得3分。没错,那就是足球:)很好的解决方案,我正要做类似的事情,但我推荐两件事。首先是对结果数组进行排序,因为结果与OP要求的不完全一样。第二件事是,如果你能将代码片段嵌入到你的解决方案中,这样OP就能运行并检查结果,那就太好了。我必须更新我的解决方案,因为有一些简单的错误。我看看是否能包括这些建议。谢谢。@DavidFontes非常感谢你的建议!让我知道你的想法!:D@DillanWilding看起来很棒:)根据时间和空间的复杂性,我想知道哪种解决方案更好,有没有办法确定哪种解决方案更优?@Pokreniseweb-在处理少量数据时,这并不重要。如果您感兴趣,可以使用进行比较。但如果插入顺序很重要,则使用贴图。另外,如果键未知,最好使用贴图,因为对象很脆弱,在这种情况下会产生意外的输出。例如,与名为
constructor
的团队一起尝试另一个答案,并查看输出。非常感谢您的建议。