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

JavaScript循环数组时如何仅重答错误问题而非重启整个循环

解决单词拼写练习的错误重试问题

你遇到的问题是错误重试时会重启整个流程,核心原因是else分支里调用typeSmart()会重新执行整个函数,导致循环从头开始。不需要完全替换for循环,只需要在for循环内部给每个单词加个while循环,强制用户重复输入当前错误的单词直到答对即可,改进后的代码如下:

const wordList = ["Cachalot", "Pétunia", "Serviette"];
let score = 0;

function typeSmart() {
  for (let i = 0; i < wordList.length; i++) {
    let typedWord;
    // 循环提示当前单词,直到输入正确
    while (true) {
      typedWord = prompt("Veuillez recopier le mot suivant : " + wordList[i]);
      if (typedWord === wordList[i]) {
        score += 1;
        console.log(`得分:${score}`);
        break; // 输入正确,进入下一个单词
      } else {
        console.log("错误,请重新输入这个单词");
      }
    }
  }
}

typeSmart();

关键改动说明:

  • 给每个单词套了一个while(true)无限循环,用户输入错误就会一直停留在当前单词的输入提示,直到输入正确才通过break跳出这个while循环,继续for循环的下一个单词。
  • 删掉了else分支里的typeSmart()调用,彻底避免重启整个流程。
  • 给wordList加上const声明(因为数组内容不需要修改),score用let,符合JS变量声明规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 01:41:00