Проверьте почтовый индекс и состояние печати при обнаружении почтового индекса

#javascript #zipcode

Вопрос:

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

     <input type="text" id="zipCode" placeholder="ZIP code" onKeyUp="validateZip()"/>
<div id="msg"></div>

    function checkIfAvailable(zip)
{
  let zones = [["90210","Beverly Hills"],
              ["90211","BH"]]
  return( zones.indexOf(zip) >= 0 )
}

function validateZip()
{
  let zip = document.getElementById("zipCode").value;
  let msg =""
  if(checkIfAvailable(zip)
    {
      msg="Our service is available in"   State
     ;
    }
   else
     {
       msg="Sorry our service is not available in this area";
     }
    document.getElementById("msg").innerHTML = msg;
}
 

Ответ №1:

если вы можете изменить значение array на an object , это будет так же просто, как:

 let zones = {90210: "Beverly Hills", 90211:"BH"};
let msgElement = document.getElementById("msg")

function validateZip(userInput) {
  if (userInput.value in zones) {
     msgElement.innerHTML = "Our service is available in "   zones[userInput.value];
  } else {
    msgElement.innerHTML = "Sorry our service is not available in this area";
  }
} 
 <input type="text" id="zipCode" placeholder="ZIP code" onKeyUp="validateZip(this)"/>
<div id="msg"></div> 

Ответ №2:

checkIfAvailable может использоваться find для возврата внутреннего массива, если он присутствует:

 function checkIfAvailable(zip) {
    let zones = [...];
    // Find an inner array where the first element [0]
    // is the zip
    return zones.find(item => item[0] === zip);
}
 

Затем в validateZip :

 const zone = checkIfAvailable(zip);
if (zone) {
    // zone will be the matching inner array
    // such as ["90210", "Beverly Hills"]
    const State = zone[1];
    msg = "Our service is available in "   State;
}