2017-02-28 7 views
1

JSの新機能は です。ユーザー入力が有効な文字列であることを確認するにはどうすればよいですか? 文字列が配列内にある場合は、ゲームを続行する必要があります。 文字列が配列の外側にある場合、ゲームはユーザーに再度推測を入力する必要があります。ユーザー入力が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; 

     } 

    ) 
} 
+1

代わりにselect要素(ドロップダウン要素)を使用して、大文字と小文字、スペーシングとスペルミスを心配する必要はありません。 – Archer

答えて

1

indexOfを使用すると、カラー配列内のguess_inputの位置を確認できます。存在しない場合は-1を返します。だから、

function check_guess() { 
    if (color.indexOf(guess_input) < 0) { 
     console.log("Not a valid colour, try again."); 
     return false; 
    } 
    return true; 
} 
+0

しかし、この問題は、文字列の正しい最初の文字で間違った文字列を入力する可能性があることです。 indexOfは、文字列が配列 –

+0

の内部の文字列と完全に等しいかどうかをチェックしません。はい、https://www.w3schools.com/jsref/jsref_indexof_array.aspを参照してください。 – ded

+0

ありがとうございます!!私はそれを考え出した。非常に感謝します。 –

0

あなたがそれもきびきび作るためにES6矢印機能を持つ関数をArray.prototype.find使用することができます。

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

上記のコードでは、guess_inputがアレイに見つからない場合、再び推測するよう警告しています。

関連する問題