javascript - 在条件中使用逻辑运算符和比较运算符 (javascript)

标签 javascript comparison conditional-statements logical-operators comparison-operators

我希望用户在下面的代码行中输入剪刀石头布游戏的答案。

userChoice = prompt("Do you choose rock, paper or scissors?");

但是,如果用户写的不是“石头”、“布”或“剪刀”,他应该再次选择,我试图用这段代码来做到这一点:

while (userChoice !== "rock" || "paper" || "scissors") {
    userChoice = prompt("Invalid choice. Please change your answer.");
};

我遇到的问题是程序一直将给定的输入识别为无效,即使它是“石头”、“布”或“剪刀”也是如此。


在输入此内容时,我设法自己找到了解决方案。

while (userChoice !== "rock" && userChoice !== "paper" && userChoice !== "scissors") {
    userChoice = prompt("Invalid choice. Please change your answer.");
};

这种方式确实有意义,第一个条件可能不起作用,因为即使您输入了正确的答案(例如“纸”),它仍然不等于其他两个答案(在这种情况下“石头”和“剪刀”),这就是为什么程序一直说答案无效的原因,对吧?还是语法错误? 现在(在工作条件下),用户的选择既不是“石头”也不是“布”也不是“剪刀”,因此它可以正常工作。

此外,是否有更简单、更简短的方式来编写该条件?

注意:我希望部分解决方案已经包含在内,因为它们可以帮助其他编码人员。

最佳答案

两个例子

一个带有数组和 Array.prototype.indexOf() :

var userChoice;
while (!~['rock', 'paper', 'scissors'].indexOf(userChoice)) {
    userChoice = prompt("Invalid choice. Please change your answer.");
};

另一个带有对象和 in运算符(operator):

The in operator returns true if the specified property is in the specified object.

var userChoice;
while (!(userChoice in {rock: 1, paper: 1, scissors: 1})) {
    userChoice = prompt("Invalid choice. Please change your answer.");
};

关于javascript - 在条件中使用逻辑运算符和比较运算符 (javascript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34516979/

相关文章:

javascript - 为什么 jquery .fail 不接收参数故意触发错误

javascript - 按 csv 文件的顺序读取列

javascript - 如何使用 PHP 和 Javascript 将来自 MySQL 的数据显示到标记上的传单弹出窗口中?

javascript - 比较两个对象数组

java - 对比有什么区别?

python - 线程和条件

javascript - React Redux 处理大型嵌套树更新

php - 精确匹配 PHP 数组的键

postgresql - 如何在 PostgreSQL 中将 CASE 语句与 LATERAL JOIN 相结合?

R ifelse 匹配