我希望用户在下面的代码行中在剪刀石头布游戏中输入他的答案。
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.");
};
这种方式确实有意义,并且第一个条件可能不起作用,因为即使您输入正确的答案(例如“纸”),它也仍然不等于其他两个答案(在这种情况下为“ rock”和“ scissors”) ),这就是为什么程序一直说答案无效的原因,对吗?还是语法错误?现在(具有工作条件),用户的选择既不必是“石头”,“纸”也不是“剪刀”,因此它可以正常工作。
另外,是否可能有更简单,更短的条件写法?
注意:我希望解决方案的各个部分已经包括进来是可以的,因为它们可以帮助其他编码人员。
两个例子
一个带有数组和Array.prototype.indexOf()
:
var userChoice;
while (!~['rock', 'paper', 'scissors'].indexOf(userChoice)) {
userChoice = prompt("Invalid choice. Please change your answer.");
};
另一个带有对象和in
运算符的对象:
将在运营商的回报
true
,如果指定的属性是在指定的对象。
var userChoice;
while (!(userChoice in {rock: 1, paper: 1, scissors: 1})) {
userChoice = prompt("Invalid choice. Please change your answer.");
};
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句