Как я могу сделать входное значение без учета регистра в массиве, используя чистый JavaScript - PullRequest
0 голосов
/ 02 мая 2018

Я хочу иметь возможность искать значение без необходимости явно вводить первую букву, используя верхний регистр. Следовательно, это может быть распознано и в нижнем регистре. Любая помощь, пожалуйста?

function animal(){
        var animal = ["Panda", "Snake", "Lemur", "Tortoise", "Whale", "Cat", "Elephant", "Jaguar", "Panther", "Llama", "Horse", "Cheetah", "Leopard", "Anteater", "Tazmanian Devil"];

            if(animal.includes(document.getElementById("animalName").value)){
                console.log("That animal is available");
            }
            else{
                console.log("That animal is not available at the moment");
            }

        }

Ответы [ 3 ]

0 голосов
/ 02 мая 2018

Просто проверьте значения в нижнем регистре. Кроме того, я бы предложил кэшировать входной элемент DOM и определить массив вне функции, чтобы они не были бесполезно переопределены при каждом вызове функции.

const animalName = document.getElementById("animalName"),
       animal = ["panda", "snake", "lemur", "tortoise", "whale", "cat", "elephant", "jaguar", "panther", "llama", "horse", "cheetah", "leopard", "anteater", "tazmanian devil"]

function animal(){
        let typed = animalName.value.toLowerCase().trim()

        if(animal.includes(typed)){
          console.log("That animal is available");
        } else {
          console.log("That animal is not available at the moment");
        }
}
0 голосов
/ 02 мая 2018

function animal(){
  var animal = ["Panda", "Snake", "Lemur", "Tortoise", "Whale", "Cat", "Elephant", "Jaguar", "Panther", "Llama", "Horse", "Cheetah", "Leopard", "Anteater", "Tazmanian Devil"];
  var valueToFind = document.getElementById("animalName").value;

valueToFind=valueToFind.toLowerCase();
valueToFind=valueToFind[0].toUpperCase()+valueToFind.substr(1);

  if(animal.includes(valueToFind)){
    console.log("That animal is available");
  }
  else{
    console.log("That animal is not available at the moment");
  }
}
        
var button= document.body.querySelector('button');
        
button.onclick=function(){
   animal();
}
<input type="text" id="animalName">
<button>test</button>
0 голосов
/ 02 мая 2018

устанавливает для входного и внутреннего массива нижний регистр, используя метод toLowerCase. Поскольку животные являются массивом, мы отображаем массив и переводим каждый элемент в нижний регистр. Затем мы получаем входное значение и переводим его в нижний регистр, после чего выполняется простая проверка includes.

document.querySelector("#myBtn").addEventListener("click", animal);

function animal(){
        var animal = ["Panda", "Snake", "Lemur", "Tortoise", "Whale", "Cat", "Elephant", "Jaguar", "Panther", "Llama", "Horse", "Cheetah", "Leopard", "Anteater", "Tazmanian Devil"].map(animal => animal.toLowerCase()), 
         myValue = document.getElementById("animalName").value.toLowerCase();

            if(animal.includes(myValue)){
                console.log("That animal is available");
            }
            else{
                console.log("That animal is not available at the moment");
            }

        }
<input id="animalName" />
<button id="myBtn">Click Me</button>

В сторону: есть лучшие способы сделать это. Например, поскольку вы создаете массив каждый раз, когда вызывается animal, я могу только предположить, что у вас есть причина для этого, и вы решили отобразить массив вместо корректировки вашего кода. Если у вас нет причин для этого, я бы посоветовал настроить ваш код так, чтобы он получал этот массив, а не собирал его каждый раз.

...