关于javascript:从提示中比较用户输入时的简化IF语句

Simplifying IF statement when comparing userInput from a prompt

本问题已经有最佳答案,请猛点这里访问。

我正在从头开始写一个简单的石头、纸、剪刀程序,我有一个似乎膨胀的if语句。我知道可以把它剪下来,但我哪儿也找不到答案。

我首先通过提示用户输入来自此语句的响应来获得变量userchoice:

1
var userChoice = prompt("Choose either Rock, Paper, or Scissors.");

我希望程序接受大写和非大写的响应(rock或rock有效),并且我还希望在用户的响应无效时提醒他们。

有没有一种方法可以接受无资本化和资本化的回应(岩石或岩石),而不写一个膨胀的if语句,如mine?

1
2
3
if (userChoice !=="Rock" && userChoice !=="rock") {
    alert("Invalid response.");
}

此if语句被缩短。在我的实际代码中,if语句还运行在比较纸和剪刀的无头和大写版本上。但为了这个例子,我把所有的胡说八道都忘了。

谢谢


与Arun的回答相同,但更短,您可以使用RegExpi标志忽略案例:

1
2
3
if (/rock/i.test(userChoice)) {
  ...
}


将用户输入userChoice转换为小写/大写,然后与小写字符串进行比较,如

1
2
3
4
5
var userChoice = prompt("Choose either Rock, Paper, or Scissors.").toLowerCase();

if (userChoice !=="rock") {
    alert("Invalid response.");
}