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

    <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
Ryan Perez 12 Июн 2021 в 20:42

2 ответа

Лучший ответ

Если вы можете изменить array на 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>
1
caramba 12 Июн 2021 в 17:52

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;
}
1
Matt U 12 Июн 2021 в 18:03