Javascript 如何将州名称转换为它';s的缩写?

Javascript 如何将州名称转换为它';s的缩写?,javascript,json,Javascript,Json,我有一个搜索词处理函数,可以按州或邮政编码搜索设施 searchTermHandler(event) { this.presentLoading(); let searchTerm = event.detail.value; this.stateList.forEach((state) => { if (state.abbreviation.toLowerCase == searchTerm.toLowerCase) { consol

我有一个搜索词处理函数,可以按州或邮政编码搜索设施

  searchTermHandler(event) {
    this.presentLoading();
    let searchTerm = event.detail.value;
    this.stateList.forEach((state) => {
      if (state.abbreviation.toLowerCase == searchTerm.toLowerCase) {
        console.log("A state.");
        this.dataService.getFacilitiesByState(searchTerm);
      } else if (state.name.toLowerCase == searchTerm.toLowerCase) {
        // @TODO: Convert state name to abbreviation, then send abbrev. to get facility by state.
        this.dataService.getFacilitiesByState(searchTerm);
      } else if (parseInt(searchTerm) != NaN) {
        if (searchTerm.length != 5) {
          alert("Please enter a 5 digit zip code.");
          console.log("A number, but not 5 digits.");
        } else {
          this.dataService.getFacilitiesByZip(searchTerm);
          console.log("A 5 digit number.");
        }
      }
    });
  }
我还有一个json文件,里面有状态及其缩写。这是一个样本


     "stateList": [
    {
        "name": "Alabama",
        "abbreviation": "AL"
    },
    {
        "name": "Alaska",
        "abbreviation": "AK"
    },
    {
        "name": "American Samoa",
        "abbreviation": "AS"
    },
    {
        "name": "Arizona",
        "abbreviation": "AZ"
    },
    {
        "name": "Arkansas",
        "abbreviation": "AR"
    },
    {
        "name": "California",
        "abbreviation": "CA"
    },
    {
        "name": "Colorado",
        "abbreviation": "CO"
    }
]

如何将州名称转换为其缩写?这样我就可以将它发送到另一个函数,该函数使用缩写按州搜索设施


谢谢大家!

检查邮政编码不应该在循环中,因为它不依赖于正在循环的状态。在搜索州缩写之前,请执行此操作

使用
.find()
方法查找匹配的状态对象,然后从中提取缩写

searchTermHandler(event) {
    this.presentLoading();
    let searchTerm = event.detail.value;
    if (parseInt(searchTerm) != NaN) {
        if (searchTerm.length != 5) {
            alert("Please enter a 5 digit zip code.");
            console.log("A number, but not 5 digits.");
        } else {
            this.dataService.getFacilitiesByZip(searchTerm);
            console.log("A 5 digit number.");
        }
    } else {
        let searchLower = searchTerm.toLowerCase();
        let state = this.stateList.find((state) => state.abbreviation.toLowerCase() == searchLower || state.name.toLowerCase() == searchLower);
        if (state) {
            console.log("State abbreviation is: " + state.abbreviation);
            this.dataService.getFacilitiesByState(state.abbreviation);
        }
    }
}

您需要调用函数:
toLowerCase()
。邮政编码检查不应该在
forEach()
循环中,因为它不依赖于状态。让我们稍后重构代码。如何将州名称转换为其缩写?下面的所有内容都是这样做的
let searchLower
<代码>状态。缩写是用户输入的状态的缩写。