Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将变量与数组元素进行比较(java脚本)_Javascript_Arrays - Fatal编程技术网

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.