【发布时间】:2017-01-12 05:43:35
【问题描述】:
我正在尝试将数组的每个元素与用户输入进行比较,以在用户的输入与数组的任何元素都不匹配时生成一条消息。我用来做的代码如下。
var guess_input;
var finished = false;
var colors = ["Aqua", "BurlyWood", "Cornsilk", "DarkGrey", "DarkRed", "Indigo", "LightGrey"];
while (!finished) {
guess_input = prompt("I'm thinking of one of these colors:\n\n" + "Aqua, BurlyWood, Cornsilk, DarkGrey, DarkRed, Indigo, LightGrey" + "\n\nWhat is the color I'm thinking of?");
finished = check_guess();
}
}
function check_guess() {
if (guess_input != colors[0] || guess_input != colors[1] || guess_input != colors[2] || guess_input != colors[3]) {
alert("Sorry, I don't recognize that color!\n\n" + "Please try again.");
return false;
}
}
这段代码的问题是,如果我只从数组中选择一个元素,它就可以正常工作。但是当我使用“或”运算符时,它不起作用。有没有更好的方法来做到这一点?我是 java 脚本新手。
谢谢!
【问题讨论】:
-
为什么要在循环中声明函数?在外面声明它,这样你就不会每次都迭代函数创建
-
使用 array.prototype.find() 会更有效
-
@Jonasw,这只有在检查所有元素时才有效,但不仅仅是其中的一部分,如元素 0 ... 2。
标签: javascript arrays