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
<代码>状态。缩写是用户输入的状态的缩写。