ユーザの入力が配列の要素と一致しない場合、配列の各要素をユーザ入力と比較してメッセージを生成しようとしています。私が使用するコードは以下の通りです。変数を配列の要素と比較する(Javaスクリプト)
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;
}
}
このコードの問題は、配列から1つの要素だけを選択すると完全に正常に動作することです。しかし、私は 'OR'演算子を使用すると、動作しません。これを行うための良い方法はありますか?私はJavaスクリプトで新しいです。
ありがとうございます!
なぜあなたのループ内で関数を宣言していますか?外に宣言すると、毎回関数の作成を繰り返しません。 –
array.prototype.find()を使用するとより効率的になります –
@Jonasw、これは、すべてのelemebtがチェックする必要がある場合にのみ機能しますが、 、要素0 ... 2のように。 –