在javascript中通过给定的电话号码检测国家/地区代码

时间:2013-10-31 22:41:09

标签: javascript country-codes

我有一个包含所有可用国家/地区代码的对象。我想知道如何通过给定的电话号码获取国家/地区代码并显示相应的国家/地区名称。电话号码看起来像16041234567(加拿大/美国+1)或者可能是8601012345678(中国+86)或任何其他国家电话号码,前面没有加号(+)。我只想获得国家代码然后我知道如何显示名称。看起来代码可以是1到4位数。

1 个答案:

答案 0 :(得分:3)

第一回答:

只是快速思考,为什么不从另一边算数。

从数字背面取10个数字。您剩下的将是截断的国家/地区代码。 从你的例子:

num = "16041234567"; code = num.slice(0, num.length-10); country_name = country_code_object[code];

此代码假定您的对象可以处理可变长度代码(但如果需要,您可以随时缓冲代码的前端。

BROKEN:中国不使用10个号码(小区使用11个)

FIX: 在更全面地查看国家/地区代码后,我放弃了它们是前缀树。这意味着,对于班轮时间,您可以逐个字符地检查

num = "16041234567";
country_code;
i = 1;
while (!country_code || i < num.length) {
    country_code = country_code_obj[num.slice(0, i)];
    i++;
}

国家/地区代码的性质将保证第一个有效的代码是正确的。 (我们可以想象这一定是真的,电话公司不知道你什么时候输入数字。他们只知道你何时到达有效国家代码的末尾)