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

如何优化JavaScript石头剪刀布游戏的胜负判断代码?

石头剪刀布游戏胜负判断的优化实现

针对你提供的石头剪刀布胜负判断代码,这里有几种更简洁高效的实现方式:

方案1:对象映射胜负关系

利用对象存储每个选项能击败的对手,通过键值对快速判断胜负,逻辑清晰且易于维护:

function getResult() {
  let result;
  if (computerChoice === userChoice) {
    result = "It's a draw";
  } else {
    // 定义各选项的克制关系
    const winMap = {
      rock: "scissors",
      paper: "rock",
      scissors: "paper"
    };
    // 判断用户选择是否能克制电脑选择
    result = winMap[userChoice] === computerChoice ? 'You won!' : 'You lost';
  }
  resultDisplay.innerHTML = result;
}

方案2:数组存储获胜组合

把所有用户获胜的组合存入数组,通过数组方法判断当前组合是否属于获胜情况,可读性强,适合新手理解:

function getResult() {
  let result;
  if (computerChoice === userChoice) {
    result = "It's a draw";
  } else {
    // 列出所有用户获胜的组合
    const winCombinations = [
      { user: "rock", computer: "scissors" },
      { user: "paper", computer: "rock" },
      { user: "scissors", computer: "paper" }
    ];
    // 检查当前选择是否在获胜组合中
    const isUserWin = winCombinations.some(
      combo => combo.user === userChoice && combo.computer === computerChoice
    );
    result = isUserWin ? 'You won!' : 'You lost';
  }
  resultDisplay.innerHTML = result;
}

方案3:合并相同结果的条件分支

将所有用户失败的条件合并为一个判断,减少分支数量,比原代码更简洁:

function getResult() {
  let result;
  if (computerChoice === userChoice) {
    result = "It's a draw";
  } else if (
    (computerChoice === "rock" && userChoice === "scissors") ||
    (computerChoice === "paper" && userChoice === "rock") ||
    (computerChoice === "scissors" && userChoice === "paper")
  ) {
    result = 'You lost';
  } else {
    result = 'You won!';
  }
  resultDisplay.innerHTML = result;
}

内容的提问来源于stack exchange,提问作者Amin Abu Dahab

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 00:48:22