0.6.0 • Published 7 months ago
@aurouscia/china-areas v0.6.0
中国大陆地区行政区划数据
数据来源
民政部官网,上次更新于2025-04-25
安装
npm install @aurouscia/china-areas数据结构约定
- 直辖市下的市、区、县(例如
上海市-静安区),均为该直辖市的直接子级(没有中间的“虚拟地级”) - 省直辖县(例如
湖北省-仙桃市),均为所属省的直接子级(没有中间的“虚拟地级”) - 缺少港澳台地区的数据(仅有省级元素,没有子级)
json使用
/dist/json目录下为json文件,有扁平的和树状结构的两种版本,两种版本各有一个.min.json压缩版。
- 扁平版本
code为六位行政区划代码name为行政区划名称
- 树状版本:若有子级,则有
children属性为子级数组,否则没有children属性。 - 压缩版:重命名了属性
code -> c,name -> n,children -> d,且没有空格和换行符。
js/ts使用
本包的默认导出对象,即为所有行政区划的数组(扁平的,无树状结构)
import areas from '@aurouscia/china-areas'其中每个元素均有两个属性:
code为六位行政区划代码name为行政区划名称 如果使用ts,可引入该元素的类型定义:
import { Division } from '@aurouscia/china-areas'如果需要树状结构,可以使用下文介绍的工具函数。
工具函数
import { xxxx } from '@aurouscia/china-areas'getTopDivisions
获取所有的顶级行政区划,即省、直辖市、自治区
getDivisionChildren
获取指定行政区划代码的所有子级行政区划(错误的或没有子级的会返回空数组)
第二个参数为是否严格匹配(默认为false,即允许有错误)否则会在代码不存在时抛出异常。
getDivisionParent
获取指定行政区划代码的父级行政区划(错误的或没有父级的会返回undefined)
第二个参数为是否严格匹配(默认为false,即允许有错误)否则会在代码不存在时抛出异常。
matchDivisionByCode, matchDivisionByNames
根据行政区划六位代码或名称查找行政区划。
第一个参数为名称数组/代码字符串,第二个参数为是否严格匹配(默认为false,即允许有错误)。
- 名称:字符串数组,例如
['湖北省','武汉市','江岸区']。- 如果是一般的省-市-区三级,则数组长度最多为3
- 如果是直辖市、省直辖县、直筒子市,则数组长度最多为2
- 如果是港澳台地区,则数组长度最多为1
- 会从高到底匹配,如果某一级没有匹配项,则只会返回到其上一级,例如
['湖北省','武昌区']会返回[{name:'湖北省',code:'420000'}],严格匹配时会抛出异常。
- 代码:六位字符串,例如
'420102'。- 如果匹配失败,则会返回空数组
- 如果代码长度不是六位,则会返回空数组
- 会从高到低匹配,如果某一级没有匹配项,则只会返回到其上一级,例如
'428802'会返回[{name:'湖北省',code:'420000'}],严格匹配时会抛出异常。
- 返回值(如果没有抛出异常):从高到低的区划对象数组
- 长度为3:
[{省}, {市}, {区}] - 长度为2:
[{省}, {市/省直辖县}]或[{直辖市}, {区}] - 长度为1:
[{省}] - 长度为0:匹配失败
- 长度为3:
isFinalDivision
判断指定行政区划代码是否为最终级行政区划(即没有子级)
isExistingCode
判断指定行政区划代码(任意级别均可)是否存在
原版数据
raw数据在/dist/raw下,为官网有关页面全选复制(并补充三沙市的两个区的缺失)获得
源码
源代码中不包含数据,只包含生成器,如果需要:
1. 按照generator/source/README.md中的说明准备数据源(必须)
2. 运行npm run genTs生成包含数据的代码(必须)
3. 运行npm run genJson生成json文件
4. 运行npm test运行单元测试
5. 运行npm run build打包
发现错误/过期
如果发现错误或过期,请在gitee上提issue,我会及时更新
https://gitee.com/au114514/au-npm-pkgs
许可证
MIT