UNPKG

china-region

Version:

中华人民共和国行政区划代码 API 快查,支持省地市三级数据联动,根据国家标准 GB 2260 行政区划代码制定

1 lines 9.38 kB
{"version":3,"file":"index.mjs","sources":["../../index.ts"],"sourcesContent":["import data from './data/region.json'\nimport province from './data/province.json'\n\ninterface Region {\n code: string;\n name: string;\n}\n\ninterface Dictionary<T> {\n [index: string]: T;\n}\n\nconst region = Object.entries(data)\n\nconst provinceByName = keyBy(province, (x: any) => x[1].slice(0, 2))\nconst provinceByAlias = keyBy(province, (x: any) => x[2])\n\nfunction keyBy<T> (collection: T[], f: any): Dictionary<T> {\n return collection.reduce((acc, x) => {\n acc[f(x)] = x\n return acc\n }, {} as any)\n}\n\nexport function getAllRegions (): Region[] {\n return region.map(([code, name]) => ({ code, name }))\n}\n\nexport function getProvinces (): (Region & { alias: string })[] {\n return province.map(p => {\n return {\n code: p[0],\n name: p[1],\n alias: p[2]\n }\n })\n}\n\nexport function getCodeByProvinceName (name: string): string | null {\n const alias = name.slice(0, 2)\n return provinceByAlias[alias]?.[0] || provinceByName[alias]?.[0] || null\n}\n\nexport function getPrefectures (provinceCode?: string): Region[] {\n return region\n // 最后两位是 00,而中间两位不是 00 的是为地级行政区\n .filter(([code]) => code.endsWith('00') && code.slice(2, 4) !== '00')\n .filter(([code]) => provinceCode ? code.slice(0, 2) === provinceCode.slice(0, 2) : true)\n .map(([code, name]) => ({ code, name }))\n}\n\nexport function getCounties (regionCode?: string): Region[] {\n return region\n .filter(([code]) => !code.endsWith('00'))\n .filter(([code]) => {\n if (!regionCode) {\n return true\n }\n if (regionCode.slice(2, 4) === '00') {\n return code.slice(0, 2) ===regionCode.slice(0, 2)\n }\n return code.slice(0, 4) ===regionCode.slice(0, 4)\n })\n .map(([code, name]) => ({ code, name }))\n}\n\n// 省管市\nexport function getSpecialCounties (regionCode?: string): Region[] {\n return region\n // 省管市中间区号为 00\n .filter(([code]) => !code.endsWith('00') && code.slice(2, 4) === '90')\n .filter(([code]) => {\n if (!regionCode) {\n return true\n }\n if (regionCode.slice(2, 4) === '00') {\n return code.slice(0, 2) ===regionCode.slice(0, 2)\n }\n return code.slice(0, 4) ===regionCode.slice(0, 4)\n })\n .map(([code, name]) => ({ code, name }))\n}\n\nexport function info (code: string): {\n name: string;\n code: string;\n prefecture: string;\n province: string;\n} | null {\n const provinceCode = code.slice(0, 2) + '0000'\n const prefectureCode = code.slice(0, 4) + '00'\n const name = (data as any)[code]\n if (!name) { return null }\n return {\n name,\n code,\n prefecture: (data as any)[prefectureCode] || null,\n province: (data as any)[provinceCode] || null\n } \n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}