js提示验证三个词之一

js prompt validation to one of three words

我正在努力学习 js。所以,为了学习,我想写一个叫做石头剪刀布的小游戏。 现在我想做一个提示(),用户必须在其中输入他想要选择的内容。但是如果他写了 3 个可能的答案(石头、剪刀、布)中的 none,他就必须再做一次。

到目前为止我的代码:

function validateUserChoice() {
var localUserChoi = prompt("Please choose rock, paper or scissors");

while (localUserChoi != "rock" || localUserChoi != "paper" || localUserChoi != "stone") {
    alert("You have to type one of the words: rock, paper, scissors");
    localUserChoi = prompt("Bitte geben Sie rock, paper oder scissors ein");
}

userChoice = localUserChoice;
}

我知道 while 循环的条件是错误的,但我必须在其中写什么?

干杯 塞巴斯蒂安

这个有效:

var answer = '';
var options = ['rock', 'paper', 'scissors'];
while (!~options.indexOf(answer)) {
  answer = prompt('Please choose: "'+ options.join(', ') +'"');
};

解释: 默认情况下 answer 不匹配任何数组值,因此 prompt 在 while 循环内完成。与数组索引(0、1、2)匹配后,索引转换为:

  • ~ = 导致索引加 1,然后取反 [这使得 0 为 -1,计算结果为 true

  • ! = 将其转换为相反的布尔值(其中 true 变为 false 以退出 while 循环)。