JavaScript 实现中国城市与区号双向映射
在前端开发中,经常需要根据用户输入的城市名称自动匹配电话区号,或在数据库中通过区号反查城市名称。这种需求通常可以通过 JavaScript 对象字典来实现。以下提供 City2Num(城市名到区号)和 Num2City(区号到城市名)两个对象的完整数据结构,覆盖了中国主要省市区的常用城市。
实现思路与准备条件
使用 JavaScript 创建键值对(Key-Value)映射是处理此类查询最轻量级的方案。无需引入外部数据库或 API,数据直接嵌入脚本即可运行。需要注意的是,部分老版本代码可能包含已合并或变更的行政区代码,使用前建议核对最新行政区划。
第1步:定义城市名称至区号的映射对象 (City2Num)
目的: 建立从中文城市名称到字符串类型区号的单向查询表。
操作: 声明变量 City2Num,将城市名作为 Key,区号字符串作为 Value。
var City2Num = {
"北京": "010", "上海": "021", "天津": "022", "重庆": "023",
"香港": "852", "澳门": "853",
"石家庄": "0311", "保定": "0312", "秦皇岛": "0335",
"杭州": "0571", "宁波": "0574", "温州": "0777",
"广州": "020", "深圳": "0755", "珠海": "0756",
"成都": "028", "绵阳": "0816", "西昌": "0834",
"武汉": "027", "宜昌": "0717", "十堰": "0719",
"南京": "025", "苏州": "0512", "无锡": "0510",
"长沙": "0731", "岳阳": "0730", "常德": "0736",
"郑州": "0371", "洛阳": "0379", "开封": "0378",
"西安": "029", "咸阳": "0910", "延安": "0911",
"兰州": "0931", "天水": "0938", "张掖": "0936",
"昆明": "0871", "大理": "0872", "丽江": "0888",
"拉萨": "0891", "日喀则": "0892",
"长春": "0431", "吉林": "0432", "延吉": "0433",
"哈尔滨": "0451", "齐齐哈尔": "0452", "牡丹江": "0453",
"沈阳": "024", "大连": "0411", "鞍山": "0412",
"太原": "0351", "大同": "0352", "长治": "0355",
"济南": "0531", "青岛": "0532", "烟台": "0535",
"福州": "0591", "厦门": "0592", "泉州": "0595",
"合肥": "0551", "芜湖": "0553", "蚌埠": "0552",
"南昌": "0791", "九江": "0792", "赣州": "0797",
"南宁": "0771", "柳州": "0772", "桂林": "0773",
"贵阳": "0851", "遵义": "0852", "安顺": "0853",
"呼和浩特": "0471", "包头": "0472", "通辽": "0475"
};
// ... 此处省略其他数百个具体城市映射 ...
第2步:定义区号至城市名称的映射对象 (Num2City)
目的: 建立从区号字符串到中文城市名称的反向查询表,用于显示或验证输入。
操作: 声明变量 Num2City,将区号字符串作为 Key,城市名作为 Value。
var Num2City = {
"010": "北京", "021": "上海", "022": "天津", "023": "重庆",
"852": "香港", "853": "澳门",
"0311": "石家庄", "0312": "保定", "0335": "秦皇岛",
"0571": "杭州", "0574": "宁波", "0777": "温州",
"020": "广州", "0755": "深圳", "0756": "珠海",
"028": "成都", "0816": "绵阳", "0834": "西昌",
"027": "武汉", "0717": "宜昌", "0719": "十堰",
"025": "南京", "0512": "苏州", "0510": "无锡",
"0731": "长沙", "0730": "岳阳", "0736": "常德",
"0371": "郑州", "0379": "洛阳", "0378": "开封",
"029": "西安", "0910": "咸阳", "0911": "延安",
"0931": "兰州", "0938": "天水", "0936": "张掖",
"0871": "昆明", "0872": "大理", "0888": "丽江",
"0891": "拉萨", "0892": "日喀则",
"0431": "长春", "0432": "吉林", "0433": "延吉",
"0451": "哈尔滨", "0452": "齐齐哈尔", "0453": "牡丹江",
"024": "沈阳", "0411": "大连", "0412": "鞍山",
"0351": "太原", "0352": "大同", "0355": "长治",
"0531": "济南", "0532": "青岛", "0535": "烟台",
"0591": "福州", "0592": "厦门", "0595": "泉州",
"0551": "合肥", "0553": "芜湖", "0552": "蚌埠",
"0791": "南昌", "0792": "九江", "0797": "赣州",
"0771": "南宁", "0772": "柳州", "0773": "桂林",
"0851": "贵阳", "0852": "遵义", "0853": "安顺",
"0471": "呼和浩特", "0472": "包头", "0475": "通辽"
};
// ... 此处省略其他数百个具体区号映射 ...
完成判断与使用示例
当这两个全局变量加载完成后,即可在页面任意位置调用查询功能。例如,在控制台输入 City2Num['北京'] 应返回 '010';输入 Num2City['010'] 应返回 '北京'。若返回 undefined,说明该城市或区号未包含在当前列表中。
- 查询区号: 用户输入城市名后,通过
City2Num[cityName]获取对应区号。 - 校验输入: 用户输入区号时,通过
Num2City[code]验证其有效性并回显城市名。
排错与维护
- 旧称与新区划: 部分城市名称可能随行政区划调整而变化(如“淮坊”应为“潍坊”,“株州”应为“株洲”),实际使用时请修正拼写错误。
- 重复区号: 某些大区可能共享一个中心区号(如
0517同时映射过淮阴和淮安),现代应用中建议优先使用更精确的当前行政命名,或检查数据源是否过时。 - 数据完整性: 此列表涵盖主要地级市及部分县级市,并非全国所有乡镇级单位,如需更详尽数据,建议接入第三方地理信息 API。
简要总结
通过构建 City2Num 和 Num2City 两个 JavaScript 对象,可以高效实现中国主要城市名称与电话区号的双向即时查找。这种方法简单直观,适合轻量级前端项目使用。以上就是 JavaScript 中国城市与区号双向映射内容的详细内容,更多关于 JavaScript 数据对象处理的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













