Javascript 如何确保用户输入是js中的有效字符串
我对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
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!);
}