簡體   English   中英

減少if else語句的數量?

[英]Reduce number of if else statements?

我有一些JavaScript,當用戶在電話字段中輸入10位數時,它會檢查國家/地區字段是否已填充,以便為其分配國家/地區代碼。 見下面的代碼。

if (Country != null) {
    var CountryName = Country[0].name;
    var CountryId = Country[0].id;
    var CountryType = Country[0].entityType;
    if (CountryName == "United States of America") {
        PhoneTemp = "+1 " + "(" + PhoneTemp.substr(0, 3) + ") " + PhoneTemp.substr(3, 3) + " - " + PhoneTemp.substr(6, 4);
    } else if (CountryName == "India") {
        PhoneTemp = "+91 " + PhoneTemp.substr(0, 4) + " " + PhoneTemp.substr(4, 6);
    }
}

如果我以這種方式做到最終會導致100+其他,如果有更好的方式嗎?

你可以使用switch或者你可以使用Jquery $.inArray(val, array)

我會去一張地圖來抽象國家邏輯

var countryMap = {
  'USA': usaLogic,
  'FR': frLogic
};

function usaLogic(number) {
   return "+1 " + "(" + number.substr(0, 3) + ") " + number.substr(3, 3) + " - " + number.substr(6, 4);
}

function frLogic(number) {
   return ".....";
}

然后,您可以將if語句減少到以下內容:

if (countryMap[CountryName]) {
   PhoneTemp = countryMap[CountryName](PhoneTemp)
}

您可以使用國家/地區和電話前綴創建陣列或結構。

var Countries = ['India', 'France', 'Spain'];
var Prefixes = [91, 32, 34];

有了它,你可以保存所有if-else語句只是在數組中調用正確的鍵。

創建國家/地區轉換器的字典。

PhoneCountryConverters["India"] = function(PhoneTemp) { return  "+91 " + PhoneTemp.substr(0, 4) + " " + PhoneTemp.substr(4, 6);}

用法:

PhoneTemp = PhoneCountryConverters[Country[0].name](PhoneTemp);

PhoneCountryConverters將為每個國家/地區提供一個條目,您可以完全刪除if語句。

嗨兄弟你可以使用這樣的兩個數組:

var CountriesPrefix = {'usa': '+1','India': '+2', 'morocco': '+212'};
var Countries = ['usa', 'India', 'morocco'];
var CountryName='usa';

if($.inArray(CountryName, countries)==0){ //The country is in array
    var PhoneTemp = countries_prefix[CountryName];
}

在這里使用關聯數組將通過使用鍵減少數組之間的索引的痛苦(這里的鍵是國家名稱)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM