JavaScript 实现中国城市与区号双向映射

Alice
Alice
发布时间:2026-10-14 | 4人浏览过
原创

在前端开发中,经常需要根据用户输入的城市名称自动匹配电话区号,或在数据库中通过区号反查城市名称。这种需求通常可以通过 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,说明该城市或区号未包含在当前列表中。

  1. 查询区号: 用户输入城市名后,通过 City2Num[cityName] 获取对应区号。
  2. 校验输入: 用户输入区号时,通过 Num2City[code] 验证其有效性并回显城市名。

排错与维护

  • 旧称与新区划: 部分城市名称可能随行政区划调整而变化(如“淮坊”应为“潍坊”,“株州”应为“株洲”),实际使用时请修正拼写错误。
  • 重复区号: 某些大区可能共享一个中心区号(如 0517 同时映射过淮阴和淮安),现代应用中建议优先使用更精确的当前行政命名,或检查数据源是否过时。
  • 数据完整性: 此列表涵盖主要地级市及部分县级市,并非全国所有乡镇级单位,如需更详尽数据,建议接入第三方地理信息 API。

简要总结

通过构建 City2Num 和 Num2City 两个 JavaScript 对象,可以高效实现中国主要城市名称与电话区号的双向即时查找。这种方法简单直观,适合轻量级前端项目使用。以上就是 JavaScript 中国城市与区号双向映射内容的详细内容,更多关于 JavaScript 数据对象处理的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表