Как убрать чувствительность к регистру при проверке строки в массиве?

1

Я сделаю это коротко и просто. Я делаю чат-основанную игру JavaScript. У меня есть массив, называемый классами:

const classes = ["brute", "medic", "ranger"];

А во-вторых, у меня есть оператор if:

if (classes.includes(target)) {
    this.sendReply('Successful.');
} else {
    this.errorReply('"' + target + '"' + ' is not a valid class.');
}

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

Теперь это работает, но проблема в том, что он чувствителен к регистру. Например, если я вхожу в "медик", он вернет "Успешный", но если я наберу "Медик", он вернется "Медик не является допустимым классом".

Как удалить эту чувствительность к регистру? Я бы предпочел не добавлять к массиву "медик", "медик", "рейнджер", "рейнджер" и т.д. Спасибо!

Теги:
arrays
case-sensitive

4 ответа

3

Перед проверкой поверните строку в нижнем регистре, например:

classes.includes(target.toLowerCase())
  • 0
    Спасибо, работал как шарм. :)
2

Прежде чем передать строку в оператор if, используйте метод toLowerCase.

if (classes.includes(target.toLowerCase())) {
    this.sendReply('Successful.'); 
} else { 
    this.errorReply('"' + target + '"' + ' is not a valid class.');
}

Или же

target = target.toLowerCase();
if (classes.includes(target)) {
    this.sendReply('Successful.'); 
} else { 
    this.errorReply('"' + target + '"' + ' is not a valid class.');
}

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/toLowerCase

  • 0
    Пожалуйста, не упоминайте w3schools, MDN и ECMA-262 намного лучше.
1

Преобразуйте строку в нижний регистр перед проверкой

0

Вы можете использовать регулярное выражение с флагом i, чтобы игнорировать регистр.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню