You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何简化石头剪刀布游戏的if/else if语句,使其更简洁可读?

石头剪刀布胜负判定代码优化方案

你的代码存在大量重复的条件判断逻辑,可通过预定义胜负关系映射的方式大幅简化,同时提升代码的可维护性。

优化后的代码

function start(computerSelection, playerSelection) {
  // 处理平局情况
  if (computerSelection === playerSelection) {
    return "It's a tie!";
  }

  // 定义各选项的克制关系:键为出拳类型,值为该类型能击败的目标
  const winMap = {
    rock: "scissors",
    paper: "rock",
    scissors: "paper"
  };

  // 验证输入是否有效
  if (!winMap[computerSelection] || !winMap[playerSelection]) {
    return "Invalid entry!";
  }

  // 判断胜负并更新分数
  if (winMap[playerSelection] === computerSelection) {
    playerScore += 1;
    return "You win!";
  } else {
    computerScore += 1;
    return "Computer wins!";
  }
}

优化亮点

  • 消除重复判断:用winMap对象统一管理克制关系,替代了原代码中6组重复的else if判断,后续若扩展游戏规则(比如加入新出拳类型),仅需修改该对象即可。
  • 逻辑分层清晰:先处理平局、无效输入这类边界情况,再执行核心胜负判断,代码可读性更强。
  • 减少冗余代码:将玩家获胜、电脑获胜的逻辑合并,避免了重复的分数累加和返回语句。

内容的提问来源于stack exchange,提问作者Caelan Quigley

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 07:55:23