Упрощение оператора IF при сравнении userInput из приглашения

Я пишу простую программу «Камни, ножницы, бумага» с нуля, и у меня есть оператор IF, который кажется раздутым. Я знаю, что его можно урезать, но нигде не могу найти ответ.

Сначала я получаю переменную userChoice, предлагая пользователю ввести свой ответ из этого оператора:

var userChoice = prompt("Choose either Rock, Paper, or Scissors.");

Я бы хотел, чтобы программа принимала ответы с заглавной буквы и без заглавной буквы (рок или рок будут допустимы), и я также хотел бы предупреждать пользователя, когда его ответ недействителен.

Есть ли способ принять ответы без заглавных букв (рок или рок), не написав раздутого оператора IF, такого как мой?

if (userChoice !== "Rock" && userChoice !== "rock") {
    alert("Invalid response.");
}

Этот оператор IF сокращен. В моем фактическом коде оператор IF работает также при сравнении версий бумаги и ножниц без заглавной буквы и с заглавной буквы. Но ради примера я опускал всю ерунду.

Спасибо


person jakewies    schedule 05.03.2015    source источник


Ответы (2)


преобразовать ввод пользователя userChoice в нижний / верхний регистр, а затем сравнить со строкой в ​​нижнем регистре, например

var userChoice = prompt("Choose either Rock, Paper, or Scissors.").toLowerCase();

if (userChoice !== "rock") {
    alert("Invalid response.");
}
person Arun P Johny    schedule 05.03.2015
comment
Потрясающе, поэтому, по сути, я написал вдвое больше кода, который мне был нужен, когда я мог просто завершить свое приглашение с помощью .toLowerCase (). Ценить это! - person jakewies; 05.03.2015

То же, что и ответ Аруна, но короче, вы можете использовать _1 _ с флагом i для игнорирования регистра:

if (/rock/i.test(userChoice)) {
  ...
}
person aarosil    schedule 05.03.2015
comment
Поскольку я новичок в javascript и познакомился только с самыми основными методами, мне нужно будет прочитать о регулярных выражениях перед их реализацией, чтобы я имел четкое представление об их назначении. Цените руководство! - person jakewies; 05.03.2015
comment
@JakeWiesler Да, они очень мощные и полезные, подумал, что я хотел бы предупредить вас и включить ссылку на документ API, чтобы вы могли прочитать о добре, наслаждайтесь! - person aarosil; 05.03.2015