如何在JavaScript中将数组元素按[x:y]格式读取到指定对象中?
修复比赛积分统计逻辑
你的代码存在两个核心问题:
- 错误提取比赛数据:直接取字符串的首尾字符当作队伍标识,完全没正确拆分
x:y格式的比分 - 缺失积分计算逻辑:只是简单赋值,没有按照比赛胜负规则统计积分
以下是修复后的代码,按照足球比赛积分规则(胜3分、平1分、负0分)实现:
function points(games) { const scoreBoard = {}; for (const game of games) { // 拆分每场比赛的比分并转为数字 const [score1, score2] = game.split(':').map(Number); const team1 = score1.toString(); const team2 = score2.toString(); // 初始化未记录队伍的积分 if (!scoreBoard[team1]) scoreBoard[team1] = 0; if (!scoreBoard[team2]) scoreBoard[team2] = 0; // 根据比分计算并累加积分 if (score1 > score2) { scoreBoard[team1] += 3; } else if (score1 === score2) { scoreBoard[team1] += 1; scoreBoard[team2] += 1; } else { scoreBoard[team2] += 3; } } return scoreBoard; } console.log(points(["1:0","2:0","3:0","4:0","2:1","3:1","4:1","3:2","4:2","4:3"]));
代码说明:
- 用
split(':')拆分每个比赛字符串,精准获取两队比分 - 以队伍的标识(如"1"、"2")作为对象键,初始化未出现过的队伍积分为0
- 按照胜负关系分别累加对应队伍的积分,最终返回完整的积分统计对象
内容的提问来源于stack exchange,提问作者Anatolian Rocks
相关产品推荐
相关产品推荐

