@Elmani

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

Задача: сделать игру "угадай цвет".

Есть массив цветов ["Red", "Orange", "Yellow", "Green", "Blue", "Indigo", "Violet"]
Игрок вводит название цвета, дальше идёт поиск по массиву на соответствие элемента.

Проблема: игрок может вводить название цвета по-разному (Red red RED).

Моё решение:
создаётся два массива - массив просто для отображения на экране с заглавными буквами colors_show = ["Red", "Orange"], второй массив colors = ["red", "оrange"] для подсчётов выводится из первого вот таким образом:
var colors_show = ["Red", "Orange", "Yellow", "Green", "Blue", "Indigo", "Violet"];
var colors_string = colors_show.toString();
var colors_string = colors_string.toLowerCase();
var colors = colors_string.split(',');

Далее введённый пользователем цвет переводится в нижний регистр и идёт поиск элемента по массиву colors. Если нужно вывести значение на экран, то для вывода используется элемент из colors_show.

Собственно, вопрос - насколько правильно это сделано и можно ли сделать по-другому?
  • Вопрос задан
  • 454 просмотра
Решения вопроса 2
Комментировать
In4in
@In4in
°•× JavaScript Developer ^_^ ו°
дальше идёт поиск по массиву на соответствие элемента.


indexOf? По мне, так проще через some:

var 
     colorsShow = ["Red", "Orange", "Yellow", "Green", "Blue", "Indigo", "Violet"],
     userColor = "red"
;

colorsShow.some(function(color){
   return color.toLowerCase() == userColor.toLowerCase();
}); //true - если совпадение есть


jsfiddle.net/In4in/t91nhkhp
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы