Упрощение оператора 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)) {
  ...
}
Другие вопросы по тегам