Я пытаюсь сравнить каждый элемент массива с пользовательским вводом для генерации сообщения, если вход пользователя не соответствует ни одному элементу массива. Код, который я использую, приведен ниже.Сравнение переменной с элементом массива (java script)
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;
}
}
проблема с этим кодом заключается в том, что если я выбираю только один элемент из массива, он отлично работает. но когда я использую оператор «OR», он не работает. Есть ли лучший способ сделать это? Я новичок в java-скрипте.
Спасибо!
Почему вы объявить функцию внутри вашего цикла? Объявите его снаружи, поэтому вы не выполняете итерацию по созданию функции каждый раз –
Использование array.prototype.find() будет более эффективным –
@Jonasw, это будет работать только в том случае, если все элементы будут проверяться, но не только его часть , подобно элементу 0 ... 2. –