Упрощение оператора IF при сравнении userInput из приглашения
Я пишу простую программу "Рок, бумага, ножницы" с нуля, и у меня есть утверждение IF, которое кажется раздутым. Я знаю, что это можно урезать, но я не могу найти ответ нигде.
Сначала я получаю переменную userChoice, предлагая пользователю ввести свой ответ из этого оператора:
var userChoice = prompt("Choose either Rock, Paper, or Scissors.");
Я хотел бы, чтобы программа принимала заглавные и некапитализированные ответы (рок или рок были бы действительными), и я также хотел бы предупредить пользователя, когда их ответ недействителен.
Есть ли способ принять некапитализированные и капитализированные ответы (рок или рок) без написания раздутого заявления IF, такого как мое?
if (userChoice !== "Rock" && userChoice !== "rock") {
alert("Invalid response.");
}
Это заявление ЕСЛИ сокращено. В моем действительном коде оператор IF также сравнивает некапитализированные и капитализированные версии бумаги и ножниц. Но ради примера я оставил всю ерунду.
Спасибо
2 ответа
Преобразовать пользовательский ввод userChoice
в нижний / верхний регистр, а затем сравнить со строкой в нижнем регистре, как
var userChoice = prompt("Choose either Rock, Paper, or Scissors.").toLowerCase();
if (userChoice !== "rock") {
alert("Invalid response.");
}
То же, что и ответ Аруна, но короче, вы можете использовать RegExp
с i
флаг, чтобы игнорировать регистр:
if (/rock/i.test(userChoice)) {
...
}