### Install Main Package Source: https://github.com/uiwjs/province-city-china/blob/master/_autodocs/05-quick-start.md Install the main province-city-china package using npm. ```bash npm install province-city-china ``` -------------------------------- ### Install Specific Packages Source: https://github.com/uiwjs/province-city-china/blob/master/_autodocs/05-quick-start.md Install specific packages for complete data, utilities, or types. ```bash # For complete data npm install @province-city-china/data ``` ```bash # For utilities only npm install @province-city-china/utils ``` ```bash # For types npm install --save-dev @province-city-china/types ``` -------------------------------- ### Install @province-city-china/level Source: https://github.com/uiwjs/province-city-china/blob/master/packages/level/README.md Install the package as a development dependency using npm. ```bash npm install @province-city-china/level --save-dev ``` -------------------------------- ### Install @province-city-china/town Package Source: https://github.com/uiwjs/province-city-china/blob/master/_autodocs/02-data-packages.md Install the township-level administrative divisions package using npm. ```bash npm install @province-city-china/town ``` -------------------------------- ### Install Province Data Package Source: https://github.com/uiwjs/province-city-china/blob/master/_autodocs/02-data-packages.md Install the province-level administrative divisions package using npm. ```bash npm install @province-city-china/province ``` -------------------------------- ### Install City Data Package Source: https://github.com/uiwjs/province-city-china/blob/master/_autodocs/02-data-packages.md Install the city-level administrative divisions package using npm. ```bash npm install @province-city-china/city ``` -------------------------------- ### Install Province Package Source: https://github.com/uiwjs/province-city-china/blob/master/packages/province/README.md Install the province package as a development dependency using npm. ```bash npm install @province-city-china/province --save-dev ``` -------------------------------- ### Province Data Example (JSON) Source: https://github.com/uiwjs/province-city-china/blob/master/README.md Example of province-level administrative data in JSON format. ```json [ { "code": "110000", "name": "北京市", "province": "11" }, { "code": "120000", "name": "天津市", "province": "12" }, // ... ] ``` -------------------------------- ### City Data Example (JSON) Source: https://github.com/uiwjs/province-city-china/blob/master/README.md Example of city-level administrative data in JSON format. ```json [ { "code": "130100", "name": "石家庄市", "province": "13", "city": "01" }, // ... ] ``` -------------------------------- ### Install @province-city-china/area Package Source: https://github.com/uiwjs/province-city-china/blob/master/_autodocs/02-data-packages.md Install the county-level administrative divisions package using npm. ```bash npm install @province-city-china/area ``` -------------------------------- ### Install Province-City-China Package Source: https://github.com/uiwjs/province-city-china/blob/master/_autodocs/README.md Install the main package or specific sub-packages using npm. This includes options for development dependencies. ```bash # Main package (all-in-one) npm install province-city-china # Specific packages npm install @province-city-china/data npm install @province-city-china/utils npm install --save-dev @province-city-china/types ``` -------------------------------- ### Total Data Example (JSON) Source: https://github.com/uiwjs/province-city-china/blob/master/README.md Example of the total administrative data structure (province, city, district, town) in JSON format. ```json [ { "code": "110000", "name": "北京市", "province": "11", "city": 0, "area": 0, "town": 0 }, // ... ] ``` -------------------------------- ### Install District Code Package Source: https://github.com/uiwjs/province-city-china/blob/master/packages/district-code/README.md Install the district-code package as a development dependency using npm. ```bash npm install @province-city-china/district-code --save-dev ``` -------------------------------- ### Install @province-city-china/data Package Source: https://github.com/uiwjs/province-city-china/blob/master/_autodocs/02-data-packages.md Install the main data package using npm. This package contains all administrative division data. ```bash npm install @province-city-china/data ``` -------------------------------- ### Install Province-City-China Area Package Source: https://github.com/uiwjs/province-city-china/blob/master/packages/area/README.md Install the province-city-china package as a development dependency using npm. ```bash npm install @province-city-china/area --save-dev ``` -------------------------------- ### Install @province-city-china/country Source: https://github.com/uiwjs/province-city-china/blob/master/_autodocs/02-data-packages.md Install the country package using npm. This package provides international country and region codes. ```bash npm install @province-city-china/country ``` -------------------------------- ### Hierarchical Data Example (JSON) Source: https://github.com/uiwjs/province-city-china/blob/master/README.md Example of hierarchical administrative data structure (province/city/district/town) in JSON format, showing nested 'children' arrays. ```json [ { "code": "420000", "name": "湖北省", "province": "42", "children": [ { "code": "420100", "name": "武汉市", "province": "42", "city": "01", "children": [ { "code": "420102", "name": "江岸区", "province": "42", "city": "01", "area": "02" }, // ... ] } // ... ] } // ... ] ``` -------------------------------- ### Install @province-city-china/level Source: https://github.com/uiwjs/province-city-china/blob/master/_autodocs/02-data-packages.md Install the level package using npm. This package provides hierarchical data for Chinese provinces, cities, and areas. ```bash npm install @province-city-china/level ``` -------------------------------- ### Country Data Example (JSON) Source: https://github.com/uiwjs/province-city-china/blob/master/README.md Example of the country data structure in JSON format. Includes country codes and names. ```json [ { "id": 1, "cnname": "阿富汗", "name": "Afghanistan", "fullname": "the Islamic Republic of Afghanistan", "alpha2": "AF", "alpha3": "AFG", "town": 4 }, { "id": 45, "cnname": "中国", "name": "China", "fullname": "the People's Republic of China", "alpha2": "CN", "alpha3": "CHN", "town": 156 } // ... ] ``` -------------------------------- ### Province Example Data Source: https://github.com/uiwjs/province-city-china/blob/master/_autodocs/01-types.md An example of a Province data object, showing the structure with code, name, and province identifier. ```typescript { "code": "360000", "name": "江西省", "province": "36" } ``` -------------------------------- ### Area Data Structure Example Source: https://github.com/uiwjs/province-city-china/blob/master/packages/area/README.md An example of the structure for the full area data, showing province, city, and area codes and names. ```json [ { "code": "110101", "name": "东城区", "province": "11", "city": "01", "area": "01" }, // ... ] ``` -------------------------------- ### Import Types from Main Package Source: https://github.com/uiwjs/province-city-china/blob/master/_autodocs/01-types.md Import all available types from the main 'province-city-china' package. Ensure the package is installed. ```typescript import type { Base, Province, City, Area, Town, Data, Level, Country } from 'province-city-china'; ``` -------------------------------- ### Data Example Source: https://github.com/uiwjs/province-city-china/blob/master/_autodocs/01-types.md An example of a Data object, representing a complete administrative division record with all relevant codes. Used for comprehensive data lookups. ```typescript { "code": "621202", "name": "武都区", "province": "62", "city": "12", "area": "02", "town": 0 } ``` -------------------------------- ### Install District Code Package Source: https://github.com/uiwjs/province-city-china/blob/master/_autodocs/02-data-packages.md Install the @province-city-china/district-code package using npm. This package provides domestic long-distance telephone area codes. ```bash npm install @province-city-china/district-code ``` -------------------------------- ### Vue.js Example for Province-City-Area Selection Source: https://github.com/uiwjs/province-city-china/blob/master/_autodocs/05-quick-start.md Demonstrates how to use the library in a Vue.js application to create cascading dropdowns for provinces, cities, and areas. Requires importing Vue reactivity APIs and specific JSON data. ```vue ``` -------------------------------- ### Package.json for Type-Only Import Source: https://github.com/uiwjs/province-city-china/blob/master/_autodocs/04-module-structure.md Use this configuration if you only need the type definitions from the province-city-china library, for example, when working with a custom data source. ```json { "dependencies": { "@province-city-china/data": "^8.5.8" }, "devDependencies": { "@province-city-china/types": "^8.5.8" } } ``` -------------------------------- ### Example Data for Country Type Source: https://github.com/uiwjs/province-city-china/blob/master/_autodocs/01-types.md Provides an example of a country data object, conforming to the Country type. It includes sequential ID, Chinese and English names, and ISO alpha-2, alpha-3, and numeric codes. ```typescript { "id": 45, "cnname": "中国", "name": "China", "fullname": "the People's Republic of China", "alpha2": "CN", "alpha3": "CHN", "numeric": 156 } ``` -------------------------------- ### Town Example Data Source: https://github.com/uiwjs/province-city-china/blob/master/_autodocs/01-types.md An example of a Town data object, including codes for province, city, area, and town. Used for township-level data queries. ```typescript { "code": "110101002000", "name": "景山街道", "province": "11", "city": "01", "area": "01", "town": "002000" } ``` -------------------------------- ### Handling Special Province-Level Administrative Divisions Source: https://github.com/uiwjs/province-city-china/blob/master/README.md This example shows how to identify and process special administrative divisions within certain provinces that have their own city codes. These are often categorized under '自治区直辖县级行政区划' or '省直辖县级行政区划'. ```bash http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2021/<省>/<省><自治区直辖县级行政区划>.html - 42 湖北省 -> # 自治区直辖县级行政区划 - 46 海南省 -> # 自治区直辖县级行政区划 - 65 新疆维吾尔自治区 -> # 自治区直辖县级行政区划 - 41 河南省 -> # 省直辖县级行政区划 # - 46 重庆市 -> 🚧 县 # - 23 黑龙江省 -> 🚧 大兴安岭地区 ``` -------------------------------- ### Example Data for Level Type Source: https://github.com/uiwjs/province-city-china/blob/master/_autodocs/01-types.md Illustrates the structure of hierarchical administrative data, including province, city, and area details with nested children. This data format is used for tree traversal. ```typescript { "code": "420000", "name": "湖北省", "province": "42", "children": [ { "code": "420100", "name": "武汉市", "province": "42", "city": "01", "children": [ { "code": "420102", "name": "江岸区", "province": "42", "city": "01", "area": "02" } ] } ] } ``` -------------------------------- ### District Code Data Format Example Source: https://github.com/uiwjs/province-city-china/blob/master/_autodocs/02-data-packages.md Example of the data format for district phone codes. Each entry includes the name of the city/region in Chinese and its corresponding telephone area code. ```typescript { name: string; // City/region name in Chinese code: string; // Telephone area code (e.g., "010" for Beijing) } ``` ```typescript [ { "name": "北京市", "code": "010" }, { "name": "上海市", "code": "021" }, // ... ] ``` -------------------------------- ### City Example Data Source: https://github.com/uiwjs/province-city-china/blob/master/_autodocs/01-types.md An example of a City data object, including province and city codes. Used for city-level data and parent lookups in hierarchy. ```typescript { "code": "654000", "name": "伊犁哈萨克自治州", "province": "65", "city": "40" } ``` -------------------------------- ### Special Administrative Divisions Data Example Source: https://github.com/uiwjs/province-city-china/blob/master/packages/core/README.md Example of data for 'autonomous region-administered county-level administrative divisions' that have independent city codes. These are often included in the 'district' data. ```javascript [{ code: '429004', name: '仙桃市', province: '42', city: '90' }, { code: '429005', name: '潜江市', province: '42', city: '90' }, { code: '429006', name: '天门市', province: '42', city: '90' }, { code: '429021', name: '神农架林区', province: '42', city: '90' }] ``` -------------------------------- ### Direct Import of JSON Data Source: https://github.com/uiwjs/province-city-china/blob/master/_autodocs/04-module-structure.md Import the complete or minified JSON data directly from the 'dist/' directory. Ensure the module is installed in your project. ```typescript import data from 'province-city-china/dist/data.json'; import minified from 'province-city-china/dist/data.min.json'; ``` -------------------------------- ### Get Beijing Districts using findAreaChild Source: https://github.com/uiwjs/province-city-china/blob/master/_autodocs/03-utility-functions.md Demonstrates how to retrieve all area-level districts for Beijing, a direct-controlled municipality, using its city code '1101'. Requires importing data and the utility function. ```typescript import { data } from 'province-city-china/data'; import { findAreaChild } from '@province-city-china/utils'; // Beijing's city code is "1101" const beijingDistricts = findAreaChild(data, '1101'); // Result: // [ // { code: "110101", name: "东城区", area: "01" }, // { code: "110102", name: "西城区", area: "02" }, // ... // ] ``` -------------------------------- ### Get Districts in a City Source: https://github.com/uiwjs/province-city-china/blob/master/_autodocs/05-quick-start.md Retrieve and list all districts for a given city using its code. The data package must be installed. ```typescript import { findAreaChild } from 'province-city-china'; import { data } from 'province-city-china/data'; // Get all districts in Wuhan (code 420100) const areas = findAreaChild(data, '420100'); areas.forEach(area => { console.log(`${area.code} ${area.name}`); }); ``` -------------------------------- ### Get All Provinces with Cities Source: https://github.com/uiwjs/province-city-china/blob/master/_autodocs/05-quick-start.md Retrieve and display all provinces along with their cities using the sortProvince function and imported data. Ensure the data package is installed. ```typescript import { sortProvince } from 'province-city-china'; import { data } from 'province-city-china/data'; // Get provinces with their cities and areas const provinces = sortProvince(data, 3); provinces.forEach(province => { console.log(`${province.code} ${province.name}`); province.children?.forEach(city => { console.log(` ${city.code} ${city.name}`); }); }); ``` -------------------------------- ### Import Paths for Main Functions Source: https://github.com/uiwjs/province-city-china/blob/master/_autodocs/INDEX.md Demonstrates three ways to import the main functions (sortProvince, findCityChild, findAreaChild) from the province-city-china package. ```typescript // Option 1: From main package import { sortProvince, findCityChild, findAreaChild } from 'province-city-china'; ``` ```typescript // Option 2: From utils package import { sortProvince, findCityChild, findAreaChild } from '@province-city-china/utils'; ``` ```typescript // Option 3: From core package import { sortProvince, findCityChild, findAreaChild } from '@province-city-china/core'; ``` -------------------------------- ### Importing Utilities from Main Package Source: https://github.com/uiwjs/province-city-china/blob/master/_autodocs/03-utility-functions.md Import the core utility functions directly from the main 'province-city-china' package. ```typescript import { sortProvince, findCityChild, findAreaChild } from 'province-city-china'; ``` -------------------------------- ### Accessing Data via CDN Source: https://github.com/uiwjs/province-city-china/blob/master/_autodocs/04-module-structure.md Access distribution files, such as the complete JSON data, using CDN links. Unpkg is a common choice, with alternatives like Githack and Statically available. ```bash https://unpkg.com/province-city-china/dist/data.json https://unpkg.com/province-city-china/dist/data.min.json https://unpkg.com/province-city-china/dist/city.json ``` -------------------------------- ### Package.json for Library Consumer Source: https://github.com/uiwjs/province-city-china/blob/master/_autodocs/04-module-structure.md Include this configuration in your package.json to use the province-city-china library directly. ```json { "dependencies": { "province-city-china": "^8.5.8" }, "devDependencies": { "@province-city-china/types": "^8.5.8" } } ``` -------------------------------- ### Data Import Patterns Source: https://github.com/uiwjs/province-city-china/blob/master/_autodocs/INDEX.md Illustrates various methods for importing data, including the main data module, direct JSON imports, and imports from individual data packages. ```typescript // Option 1: From data module const { data, province, city, area, town, level } = require('province-city-china/data'); ``` ```typescript // Option 2: Direct JSON import import data from 'province-city-china/dist/data.json'; import province from 'province-city-china/dist/province.json'; ``` ```typescript // Option 3: From individual packages import provinces from '@province-city-china/province'; import cities from '@province-city-china/city'; ``` -------------------------------- ### Import Pattern 1: All from Main Package Source: https://github.com/uiwjs/province-city-china/blob/master/_autodocs/04-module-structure.md This is the simplest import pattern, suitable for small projects. It imports all necessary functions and types directly from the main 'province-city-china' package. ```typescript import { sortProvince, findCityChild, findAreaChild } from 'province-city-china'; import type { Province, City, Area, Data, Level } from 'province-city-china'; // Data imports (requires separate step) const { data, province, city, area } = require('province-city-china/data'); ``` -------------------------------- ### Area Example Data Source: https://github.com/uiwjs/province-city-china/blob/master/_autodocs/01-types.md An example of an Area data object, including province, city, and area codes. Used for county-level data and area child queries. ```typescript { "code": "422827", "name": "来凤县", "province": "42", "city": "28", "area": "27" } ``` -------------------------------- ### Build Administrative Index with TypeScript Source: https://github.com/uiwjs/province-city-china/blob/master/_autodocs/08-advanced-patterns.md Use this class to create indexed structures from administrative data for fast lookups by code, name, province, city, or area. Requires importing data from 'province-city-china/data'. ```typescript import { data } from 'province-city-china/data'; class AdministrativeIndex { codeMap = new Map(); nameMap = new Map(); provinceIndex = new Map(); cityIndex = new Map(); areaIndex = new Map(); constructor(data) { data.forEach(item => { // Index by code this.codeMap.set(item.code, item); // Index by name if (!this.nameMap.has(item.name)) { this.nameMap.set(item.name, []); } this.nameMap.get(item.name).push(item); // Index by province if (!this.provinceIndex.has(item.province)) { this.provinceIndex.set(item.province, []); } this.provinceIndex.get(item.province).push(item); // Index by city if (item.city !== 0) { const cityKey = `${item.province}${item.city}`; if (!this.cityIndex.has(cityKey)) { this.cityIndex.set(cityKey, []); } this.cityIndex.get(cityKey).push(item); } // Index by area if (item.area !== 0) { const areaKey = `${item.province}${item.city}${item.area}`; if (!this.areaIndex.has(areaKey)) { this.areaIndex.set(areaKey, []); } this.areaIndex.get(areaKey).push(item); } }); } findByCode(code) { return this.codeMap.get(code); } findByName(name) { return this.nameMap.get(name) || []; } findInProvince(provinceCode) { return this.provinceIndex.get(provinceCode) || []; } findInCity(provinceCode, cityCode) { const key = `${provinceCode}${cityCode}`; return this.cityIndex.get(key) || []; } } // Usage const index = new AdministrativeIndex(data); const beijing = index.findByCode('110000'); const byName = index.findByName('武汉市'); const inHubei = index.findInProvince('42'); const inWuhan = index.findInCity('42', '01'); ``` -------------------------------- ### Importing Utilities from Utils Package Source: https://github.com/uiwjs/province-city-china/blob/master/_autodocs/03-utility-functions.md Import utility functions from the '@province-city-china/utils' sub-package for specific utility needs. ```typescript import { sortProvince, findCityChild, findAreaChild } from '@province-city-china/utils'; ``` -------------------------------- ### Combined Usage Pattern for Hierarchical Navigation Source: https://github.com/uiwjs/province-city-china/blob/master/_autodocs/03-utility-functions.md Demonstrates how to use utility functions to retrieve and navigate hierarchical province, city, and area data. Ensure the 'data' is imported correctly. ```typescript import { data } from 'province-city-china/data'; import { sortProvince, findCityChild, findAreaChild } from '@province-city-china/utils'; // Step 1: Get province hierarchy const provinces = sortProvince(data, 0); // Provinces only const provinceWithCities = sortProvince(data, 1); // With cities const fullHierarchy = sortProvince(data); // Full 3-level hierarchy // Step 2: Find cities in a province (if needed dynamically) const citiesInHubei = findCityChild(data, '42'); // Step 3: Find areas in a city const areasInWuhan = findAreaChild(data, '420100'); // Step 4: Navigate from the hierarchy const firstProvince = provinces[0]; // { code: "110000", name: "北京市" } const citiesInProvince = findCityChild(data, '11'); // Get cities dynamically ``` -------------------------------- ### Province Level Codes Source: https://github.com/uiwjs/province-city-china/blob/master/_autodocs/07-data-codes-reference.md Represents full province-level administrative divisions. Each entry starts with a two-digit province code. ```text 110000 | 北京市 | Province code 11 120000 | 天津市 | Province code 12 130000 | 河北省 | Province code 13 360000 | 江西省 | Province code 36 420000 | 湖北省 | Province code 42 ``` -------------------------------- ### Get Cities in a Province Source: https://github.com/uiwjs/province-city-china/blob/master/_autodocs/05-quick-start.md Find and display all cities within a specific province using its code. Requires the data package. ```typescript import { findCityChild } from 'province-city-china'; import { data } from 'province-city-china/data'; // Get all cities in Guangdong (code 44) const cities = findCityChild(data, '44'); cities.forEach(city => { console.log(`${city.code} ${city.name}`); }); ``` -------------------------------- ### Retrieve Parent Information Source: https://github.com/uiwjs/province-city-china/blob/master/_autodocs/05-quick-start.md Get the parent province, city, and area information for a given data item. This involves searching the data based on hierarchical codes. ```typescript import { data } from 'province-city-china/data'; function getParent(item) { // Find province const province = data.find(d => d.province === item.province && d.city === 0); // Find city (if applicable) const city = data.find(d => d.province === item.province && d.city === item.city && d.area === 0 ); // Find area (if applicable) const area = data.find(d => d.province === item.province && d.city === item.city && d.area === item.area && d.town === 0 ); return { province, city, area }; } ``` -------------------------------- ### React Hierarchical Tree Component Source: https://github.com/uiwjs/province-city-china/blob/master/_autodocs/05-quick-start.md Generate a hierarchical tree structure for provinces and their cities using React. This example utilizes the sortProvince utility function to organize the data. ```typescript import React from 'react'; import { sortProvince } from 'province-city-china'; import { data } from 'province-city-china/data'; export function ProvinceTree() { const hierarchy = sortProvince(data, 1); // Province + City level return ( ); } ``` -------------------------------- ### Basic Usage of Province-City-China Utilities Source: https://github.com/uiwjs/province-city-china/blob/master/_autodocs/README.md Demonstrates how to import and use utility functions for sorting provinces and finding child cities or areas. Requires importing data separately. ```typescript // Import utilities import { sortProvince, findCityChild, findAreaChild } from 'province-city-china'; import { data } from 'province-city-china/data'; // Get provinces with hierarchy const provinces = sortProvince(data, 3); // Find cities in a province const cities = findCityChild(data, '42'); // Hubei // Find areas in a city const areas = findAreaChild(data, '420100'); // Wuhan ``` -------------------------------- ### Get Nanchang Districts using findAreaChild Source: https://github.com/uiwjs/province-city-china/blob/master/_autodocs/03-utility-functions.md Shows how to find all area-level districts for Nanchang, a city within a regular province, using its full city code '360100'. ```typescript const nanchangDistricts = findAreaChild(data, '360100'); // Result: // [ // { code: "360102", name: "东湖区", area: "02" }, // { code: "360103", name: "西湖区", area: "03" }, // ... // ] ``` -------------------------------- ### Import Pattern 2: Granular Package Imports Source: https://github.com/uiwjs/province-city-china/blob/master/_autodocs/04-module-structure.md This pattern is recommended for production environments with specific needs, allowing for more targeted imports from granular packages like '@province-city-china/core', '@province-city-china/types', and '@province-city-china/data'. ```typescript // Utilities import { sortProvince } from '@province-city-china/core'; // Types import type { Province, City } from '@province-city-china/types'; // Data import data from '@province-city-china/data/data.json'; import hierarchy from '@province-city-china/level/level.json'; ``` -------------------------------- ### Build Full 3-Level Hierarchy with sortProvince Source: https://github.com/uiwjs/province-city-china/blob/master/_autodocs/03-utility-functions.md Use `sortProvince` with default parameters to convert flat administrative data into a complete 3-level hierarchy (province, city, area). Ensure the `data` is imported from `province-city-china/data` and `sortProvince` from `@province-city-china/utils`. ```typescript import { data } from 'province-city-china/data'; import { sortProvince } from '@province-city-china/utils'; const hierarchy = sortProvince(data); // Result structure: // [ // { // code: "110000", // name: "北京市", // children: [ // { // code: "110100", // name: "朝阳区", // children: [...] // } // ] // }, // ... // ] ``` -------------------------------- ### Utils/Core Modules Exports Source: https://github.com/uiwjs/province-city-china/blob/master/_autodocs/06-api-reference.md The utility modules provide the same sorting and child-finding functions as the main package, intended for direct use or as an alternative import path. ```APIDOC ## Module: @province-city-china/utils or @province-city-china/core ### Description Provides utility functions for sorting and retrieving hierarchical location data. ### Exports #### Functions ##### sortProvince - **Description**: Sorts an array of hierarchical data by province level. - **Parameters**: - `arr` (Level[]): The array of data to sort. - `level` (number, optional): The level to sort by. - **Returns**: `Level[]` - The sorted array. ##### findCityChild - **Description**: Finds child cities for a given province code. - **Parameters**: - `arr` (Level[]): The array of data to search within. - `code` (string): The code of the province to find children for. - `level` (number, optional): The level to filter by. - **Returns**: `City[]` - An array of child cities. ##### findAreaChild - **Description**: Finds child areas for a given city code. - **Parameters**: - `arr` (Level[]): The array of data to search within. - `code` (string): The code of the city to find children for. - `level` (number, optional): The level to filter by. - **Returns**: `Area[]` - An array of child areas. ``` -------------------------------- ### Import Individual Data Packages (ES Modules) Source: https://github.com/uiwjs/province-city-china/blob/master/_autodocs/04-module-structure.md Import data arrays from individual packages for provinces, cities, areas, towns, levels, countries, and district codes using ES Modules. ```typescript // Default export is the array import provinces from '@province-city-china/province'; // OR const provinces = require('@province-city-china/province'); ``` ```typescript import cities from '@province-city-china/city'; ``` ```typescript import areas from '@province-city-china/area'; ``` ```typescript import towns from '@province-city-china/town'; ``` ```typescript import hierarchy from '@province-city-china/level'; ``` ```typescript import countries from '@province-city-china/country'; ``` ```typescript import districtCodes from '@province-city-china/district-code'; ``` -------------------------------- ### Total Data Minified Keys (JSON) Source: https://github.com/uiwjs/province-city-china/blob/master/README.md Mapping of minified keys to their original names for total administrative data. ```json code: 'c' name: 'n' province: 'p' city: 'y' area: 'a' town: 't' ``` -------------------------------- ### Importing Utilities from Core Package Source: https://github.com/uiwjs/province-city-china/blob/master/_autodocs/03-utility-functions.md Import utility functions from the '@province-city-china/core' sub-package, which may contain core functionalities. ```typescript import { sortProvince, findCityChild, findAreaChild } from '@province-city-china/core'; ``` -------------------------------- ### Monorepo Directory Structure Source: https://github.com/uiwjs/province-city-china/blob/master/_autodocs/04-module-structure.md Illustrates the hierarchical organization of packages within the monorepo. Each package serves a distinct purpose, from type definitions to specific data levels. ```text province-city-china/ ├── package.json (root/workspace config) ├── packages/ │ ├── types/ (Type definitions) │ ├── core/ (Utility functions) │ ├── utils/ (Utility re-exports) │ ├── data/ (Complete administrative data) │ ├── province/ (Province-level data) │ ├── city/ (City-level data) │ ├── area/ (Area-level data) │ ├── town/ (Town-level data) │ ├── level/ (Hierarchical data structure) │ ├── country/ (Country/region codes) │ └── district-code/ (Telephone area codes) └── dist/ (Built distribution files) ``` -------------------------------- ### Import Data Module (CommonJS) Source: https://github.com/uiwjs/province-city-china/blob/master/_autodocs/04-module-structure.md Import all administrative divisions data using CommonJS from the dedicated data module. ```typescript // CommonJS - data const { data, province, city, area, town, level } = require('province-city-china/data'); ``` -------------------------------- ### Import Data Module (ES Modules) Source: https://github.com/uiwjs/province-city-china/blob/master/_autodocs/04-module-structure.md Import individual JSON data files for administrative divisions using ES Modules. ```typescript // ES Modules - individual files import data from 'province-city-china/dist/data.json'; import province from 'province-city-china/dist/province.json'; import city from 'province-city-china/dist/city.json'; import area from 'province-city-china/dist/area.json'; import town from 'province-city-china/dist/town.json'; import level from 'province-city-china/dist/level.json'; ``` -------------------------------- ### String Matching for Hierarchical Queries Source: https://github.com/uiwjs/province-city-china/blob/master/_autodocs/07-data-codes-reference.md Demonstrates how to use string prefix matching or regular expressions in TypeScript to filter data based on administrative code prefixes, useful for retrieving all entries under a specific region. ```typescript // Code prefix matching for hierarchical queries const code = "420100"; data.filter(item => item.code.startsWith(code)) // Gets all items under Wuhan ``` ```typescript // OR with RegExp const pattern = new RegExp(`^${code}`); data.filter(item => pattern.test(item.code)) ``` -------------------------------- ### Type Imports Source: https://github.com/uiwjs/province-city-china/blob/master/_autodocs/INDEX.md Shows how to import type definitions for Province, City, Area, Data, and Level from both the main package and the dedicated types package. ```typescript // From main package import type { Province, City, Area, Data, Level } from 'province-city-china'; ``` ```typescript // From types package import type { Province, City, Area, Data, Level } from '@province-city-china/types'; ``` -------------------------------- ### Import from Main Package (CommonJS) Source: https://github.com/uiwjs/province-city-china/blob/master/_autodocs/04-module-structure.md Import all data and utilities or specific functions from the main package using CommonJS. ```typescript // CommonJS const { data, province, city, area, town, level, sortProvince, findCityChild, findAreaChild } = require('province-city-china/data'); // OR with specific imports const { sortProvince, findCityChild, findAreaChild } = require('province-city-china'); ``` -------------------------------- ### Import Data Modules (ES Modules) Source: https://github.com/uiwjs/province-city-china/blob/master/_autodocs/02-data-packages.md Import data modules such as data, province, city, area, town, and level using ES module syntax. These imports point to JSON files within the dist/ directory. ```typescript import data from 'province-city-china/dist/data.json'; import province from 'province-city-china/dist/province.json'; import city from 'province-city-china/dist/city.json'; import area from 'province-city-china/dist/area.json'; import town from 'province-city-china/dist/town.json'; import level from 'province-city-china/dist/level.json'; ``` -------------------------------- ### Import Data Package Source: https://github.com/uiwjs/province-city-china/blob/master/_autodocs/02-data-packages.md Import the data from the package using either CommonJS or ES Modules syntax. The default export provides the full dataset. ```typescript // CommonJS const data = require('@province-city-china/data'); // ES Modules import data from '@province-city-china/data/data.json'; ``` -------------------------------- ### Import Pattern 4: Mixed CommonJS and ESM Source: https://github.com/uiwjs/province-city-china/blob/master/_autodocs/04-module-structure.md This pattern demonstrates how to handle mixed CommonJS and ES Module environments, using 'require' for CommonJS modules and 'import' for ES modules, including JSON imports with bundler support. ```typescript // CommonJS require const { data, province, city } = require('province-city-china/data'); // ES import import { sortProvince } from 'province-city-china'; // JSON import (with bundler support) import areas from '@province-city-china/area/area.json'; ``` -------------------------------- ### Package Dependency Graph Source: https://github.com/uiwjs/province-city-china/blob/master/_autodocs/04-module-structure.md Visualizes the dependency relationships between the different packages in the monorepo. It shows how core utilities and data packages are consumed by higher-level packages and the main package. ```text @province-city-china/types (base types) ├── @province-city-china/core (utilities) ├── @province-city-china/utils (utilities wrapper) ├── @province-city-china/data (complete data) ├── @province-city-china/province (province data) ├── @province-city-china/city (city data) ├── @province-city-china/area (area data) ├── @province-city-china/town (town data) ├── @province-city-china/level (hierarchical data) ├── @province-city-china/country (country data) └── @province-city-china/district-code (telephone codes) province-city-china (main package, includes all above) ``` -------------------------------- ### HTML Form with Cascading Selects Source: https://github.com/uiwjs/province-city-china/blob/master/_autodocs/05-quick-start.md Use this HTML structure and JavaScript to create a dynamic location selector. It populates provinces, then cities based on province selection, and finally areas based on city selection. Ensure the `province-city-china` library is imported. ```html
``` ```javascript import { findCityChild, findAreaChild } from 'province-city-china'; import provinces from 'province-city-china/dist/province.json'; import data from 'province-city-china/dist/data.json'; const provinceSelect = document.getElementById('province'); const citySelect = document.getElementById('city'); const areaSelect = document.getElementById('area'); // Populate provinces provinces.forEach(p => { const option = document.createElement('option'); option.value = p.province; option.textContent = p.name; provinceSelect.appendChild(option); }); // Update cities when province changes provinceSelect.addEventListener('change', (e) => { citySelect.innerHTML = ''; areaSelect.innerHTML = ''; areaSelect.disabled = true; if (e.target.value) { const cities = findCityChild(data, e.target.value); cities.forEach(c => { const option = document.createElement('option'); option.value = c.code; option.textContent = c.name; citySelect.appendChild(option); }); citySelect.disabled = false; } else { citySelect.disabled = true; } }); // Update areas when city changes citySelect.addEventListener('change', (e) => { areaSelect.innerHTML = ''; if (e.target.value) { const areas = findAreaChild(data, e.target.value); areas.forEach(a => { const option = document.createElement('option'); option.value = a.code; option.textContent = a.name; areaSelect.appendChild(option); }); areaSelect.disabled = false; } else { areaSelect.disabled = true; } }); ``` -------------------------------- ### Import Pattern 3: Distributed Files Only Source: https://github.com/uiwjs/province-city-china/blob/master/_autodocs/04-module-structure.md This pattern is ideal for tree-shaking and minimizing bundle size by importing directly from distributed JSON files. It also imports types from '@province-city-china/types'. ```typescript import data from 'province-city-china/dist/data.json'; import level from 'province-city-china/dist/level.json'; import country from 'province-city-china/dist/country.json'; import type { Data, Level, Country } from '@province-city-china/types'; ``` -------------------------------- ### Import and Use District Code Data Source: https://github.com/uiwjs/province-city-china/blob/master/packages/district-code/README.md Import the district code data using require and access it as a JavaScript array. ```javascript const data = require('@province-city-china/district-code') // => [....] ``` -------------------------------- ### Import Raw Data from Province-City-China Source: https://github.com/uiwjs/province-city-china/blob/master/_autodocs/05-quick-start.md Import different JSON data files for complete data, specific levels like provinces, cities, areas, or hierarchical structures. Also includes imports for country and district code data. ```typescript // Complete data import data from 'province-city-china/dist/data.json'; // Specific levels import provinces from 'province-city-china/dist/province.json'; import cities from 'province-city-china/dist/city.json'; import areas from 'province-city-china/dist/area.json'; // Hierarchical structure import hierarchy from 'province-city-china/dist/level.json'; // Other data import countries from 'province-city-china/dist/country.json'; import districtCodes from 'province-city-china/dist/district-code.json'; ``` -------------------------------- ### Importing Type Definitions Source: https://github.com/uiwjs/province-city-china/blob/master/_autodocs/README.md Import type definitions for various administrative levels and data structures from the main package. ```typescript import type { Base, Province, City, Area, Town, Data, Level, Country } from 'province-city-china'; ```