编写比较两数组回合得分、判定最终获胜者的JavaScript函数
解决数组回合得分比较的获胜者判定问题
需求明确
我们需要实现一个函数,对比两个玩家的得分数组:
- 数组中每个元素对应同一回合的得分,回合获胜者为该回合得分更高的玩家
- 最终获胜者是赢得回合数更多的一方;若双方赢的回合数相同,则判定为平局
- 示例:
player1 = [4,5,7,8],player2 = [5,3,2,1],player1赢3回合(5>3、7>2、8>1),player2赢1回合(5>4),最终player1获胜
原代码的问题分析
你提供的代码存在几个关键问题:
- 语法错误:
else(result1[i] == result[i]);写法错误,else不需要附加条件判断,且result[i]应为result2[i],多余的分号也会导致逻辑错乱 - 逻辑错误:平局时给两个玩家都加回合数,不符合需求——平局应该双方都不增加获胜回合数
- 输出时机错误:把胜负判断放在
for循环内部,导致每轮回合结束就打印结果,而非所有回合统计完成后输出最终结果
修正后的代码
function solution(result1, result2) { let player1Wins = 0; let player2Wins = 0; // 遍历每一轮回合统计获胜次数 for (let i = 0; i < result1.length; i++) { if (result1[i] > result2[i]) { player1Wins++; } else if (result2[i] > result1[i]) { player2Wins++; } // 平局情况不做处理,双方都不增加获胜次数 } // 所有回合统计完成后,判定最终结果 if (player1Wins > player2Wins) { console.log("PLAYER1"); } else if (player1Wins === player2Wins) { console.log("TIE"); } else { console.log("PLAYER2"); } } // 测试示例 solution([4,5,7,8], [5,3,2,1]); // 输出 PLAYER1
代码说明
- 用
player1Wins和player2Wins变量统计获胜回合数,命名更直观清晰 - 遍历数组时仅在一方得分更高时增加对应获胜次数,平局不做处理
- 胜负判断放在循环外部,确保所有回合统计完成后再输出最终结果
- 测试示例可正确输出
PLAYER1,完全符合需求
内容的提问来源于stack exchange,提问作者user21275506
相关产品推荐
相关产品推荐

