Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.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 如何确保用户输入是js中的有效字符串_Javascript_Arrays - Fatal编程技术网

Javascript 如何确保用户输入是js中的有效字符串

Javascript 如何确保用户输入是js中的有效字符串,javascript,arrays,Javascript,Arrays,我对JS很陌生, 如何确保用户输入是有效的字符串? 如果字符串在数组中,则游戏应继续。 如果字符串在数组之外,游戏应该要求用户再次输入他们的猜测 var color = ["AliceBlue","Black","FireBrick","GreenYellow","LightBlue","Ivory","MediumBlue","Indigo","SpringGreen","Moccasin"]; var target; var guess_input_text; var guess_inpu

我对JS很陌生, 如何确保用户输入是有效的字符串? 如果字符串在数组中,则游戏应继续。 如果字符串在数组之外,游戏应该要求用户再次输入他们的猜测

var color = ["AliceBlue","Black","FireBrick","GreenYellow","LightBlue","Ivory","MediumBlue","Indigo","SpringGreen","Moccasin"];

var target;
var guess_input_text;
var guess_input;
var finished = false;
var guesses = 0;
var rightAnswer;
var i = 0;

function do_game() {
    var random_number = Math.random()* color.length;
    var random_number_interger = Math.floor(random_number);
    target = random_number_interger + 1;
    rightAnswer = color[target];


    while(!finished) {
        guess_input_text = prompt("I am thinking of one of these colors:\n\n" + color.sort()+ "\n\n The right answer is\n" + rightAnswer);
        guess_input = guess_input_text;
        guesses +=1;
       finished = check_guess();

    }
}


function check_guess() {



     if(guess_input < rightAnswer){

          console.log("Hint: your color is alphabetically lower than mine")
          return false;
      }
      else if( guess_input > rightAnswer) {

         console.log("Hint: your color is alphabetically higher than mine ")
          return false;
      }
     else (guess_input == rightAnswer)
      {
          console.log("Congrats!!!")
          return true;

      }  

    )
}
var color=[“艾丽赛蓝”、“黑色”、“耐火砖”、“绿黄色”、“浅蓝色”、“象牙色”、“中蓝色”、“靛蓝”、“春绿”、“摩卡鞋”];
var目标;
变量猜测输入文本;
var-u输入;
var finished=false;
var猜测=0;
正确答案;
var i=0;
函数do_game(){
var random_number=Math.random()*color.length;
var random\u number\u Integer=数学地板(随机数);
目标=随机数+整数+1;
rightAnswer=颜色[目标];
当(!完成){
guess\u input\u text=prompt(“我正在考虑这些颜色中的一种:\n\n”+color.sort()+”\n\n正确答案是\n”+正确答案);
猜测输入=猜测输入文本;
猜测+=1;
完成=检查猜测();
}
}
函数检查_guess(){
如果(猜测输入<正确答案){
log(“提示:你的颜色按字母顺序比我的低”)
返回false;
}
否则如果(猜测输入>正确答案){
log(“提示:你的颜色按字母顺序比我的高”)
返回false;
}
else(猜测输入==rightAnswer)
{
console.log(“恭喜!!!”)
返回true;
}  
)
}

您可以使用indexOf检查颜色数组中guess\u输入的位置。如果不存在,它将返回-1

因此:

函数检查_guess(){
if(颜色索引of(猜测输入)<0){
log(“不是有效的颜色,请重试。”);
返回false;
}
返回true;
}

您可以将Array.prototype.find函数与ES6 arrow函数一起使用,以使其更快速

if(color.findIndex(e => e === guess_input) === -1){
    alert("Please guess again!);
}

上面的代码提醒用户如果在数组中找不到
guess\u输入
,请再次猜测。

请改用select元素(下拉元素),这样您就不必担心大小写、间距和拼写错误。但问题是,您可能输入了错误的字符串,该字符串的第一个字母可能是正确的。indexOf不会检查字符串是否完全等于它将检查的数组中的一个字符串,请看这没有问题
if(color.findIndex(e => e === guess_input) === -1){
    alert("Please guess again!);
}