我希望用户在下面的代码行中输入剪刀石头布游戏的答案。
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/