Javascript 将变量与数组元素进行比较(java脚本)
我试图将数组中的每个元素与用户输入进行比较,以便在用户输入与数组中的任何元素不匹配时生成一条消息。我使用的代码如下Javascript 将变量与数组元素进行比较(java脚本),javascript,arrays,Javascript,Arrays,我试图将数组中的每个元素与用户输入进行比较,以便在用户输入与数组中的任何元素不匹配时生成一条消息。我使用的代码如下 var guess_input; var finished = false; var colors = ["Aqua", "BurlyWood", "Cornsilk", "DarkGrey", "DarkRed", "Indigo", "LightGrey"]; while (!finished) { guess_input = prompt("I'm th
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脚本新手
谢谢 您可以使用操作符&&
,因为您需要检查所有要检查的颜色
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;
}
对于工作代码,还需要为找到的颜色返回true
var-guess\u输入;
var finished=false;
var颜色=[“水蓝”、“白肋木”、“玉米丝”、“暗灰色”、“暗灰色”、“靛蓝”、“浅灰色”];
当(!完成){
guess_input=prompt(“我正在考虑这些颜色中的一种:\n\n“+”浅绿色、白肋木、玉米丝、深灰色、深灰色、靛蓝、浅灰色“+”\n\n我在考虑什么颜色?”);
完成=检查猜测();
}
函数检查_guess(){
如果(猜测输入!=颜色[0]&&guess输入!=颜色[1]&&guess输入!=颜色[2]&&guess输入!=颜色[3]){
警报(“对不起,我不认识那种颜色!\n\n”+“请再试一次。”);
返回false;
}
return true;//必需,否则函数返回undefined,这是一个falsy值
}
您需要将guess\u输入
与颜色
数组中的项目进行比较。这是Array.prototype.some()
方法的完美工作,该方法根据其回调中定义的条件返回true
或false
。例如
var test_guess = colours.some(function(color) {
/* 'color' = each item in 'colours' */
return color === guess_input;
});
if (test_guess) {
/* correct ..... */
} else {
/* incorrect .... */
}
这里,.some()
开始迭代颜色
数组中的所有项,直到条件返回true
。如果猜测与颜色匹配,变量test\u guess
将为true
,否则false
请参阅:为什么要在循环中声明函数?在外部声明它,这样您就不会每次都迭代函数创建,使用array.prototype.find()会更好efficent@Jonasw,这只会起作用,如果所有元素都要检查,而不仅仅是它的一部分,如元素0。。。2.