我有一些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+其他人,如果有更好的方法吗?
答案 0 :(得分:4)
您可以使用开关,也可以使用Jquery $.inArray(val, array)
答案 1 :(得分:2)
我会去绘制一个地图来抽象国家逻辑
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)
}
答案 2 :(得分:1)
您可以使用国家/地区和电话前缀制作阵列或结构。
var Countries = ['India', 'France', 'Spain'];
var Prefixes = [91, 32, 34];
使用它,您可以保存所有if-else语句,只需在数组中调用正确的键。
答案 3 :(得分:0)
创建国家/地区转换器字典。
PhoneCountryConverters["India"] = function(PhoneTemp) { return "+91 " + PhoneTemp.substr(0, 4) + " " + PhoneTemp.substr(4, 6);}
用法:
PhoneTemp = PhoneCountryConverters[Country[0].name](PhoneTemp);
PhoneCountryConverters将为每个国家/地区提供一个条目,您可以完全删除if语句。
答案 4 :(得分:0)
嗨,兄弟你可以使用这样的两个数组:
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];
}
在这里使用关联数组将通过使用键减少数组之间索引的痛苦(这里的键是国家名称)。