rk
2025-09-28 2304d7b140c5c5b4bf3a83f9ced8bff37d20c42e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
// geo 'https://raw.githubusercontent.com/88250/city-geo/master/data.json'
// provinces 'https://github.com/modood/Administrative-divisions-of-China/blob/master/dist/provinces.json'
// cities 'https://github.com/modood/Administrative-divisions-of-China/blob/master/dist/cities.json'
 
const fs = require('fs')
const pinyin = require('js-pinyin')
 
let geo = require('./assets/geo')
let provinces = require('./assets/provinces')
let cities = require('./assets/cities')
 
// 省直辖县级行政区划
let areas = ['4190', '4290', '4690', '6590']
cities = cities.filter(city => !areas.includes(city.code))
 
// 直辖市
let aCity = ['1101', '1201', '3101', '5001']
 
cities.forEach(city => {
    city.province = provinces.find(province => province.code === city.provinceCode).name
    if (aCity.includes(city.code)) {
        city.name = city.province
    }
    let g = geo.find(g => g.city === city.name || g.province === city.name)
    city.lat = g.lat
    city.lng = g.lng
    if (city.name.lastIndexOf('市') === city.name.length - 1) {
        city.name = city.name.slice(0, city.name.length - 1)
    }
})
 
// A-Z
let json = []
 
for (var i = 0; i < 26; i++) {
    json.push({
        initial: String.fromCharCode(65 + i),
        list: []
    })
}
 
json.forEach(j => {
    cities.forEach(city => {
        if (pinyin.getFullChars(city.name).slice(0, 1) === j.initial) {
            j.list.push(city)
        }
    })
})
 
// 过滤空数组
json = json.filter(j => j.list.length)
 
fs.writeFileSync('./cities.json', JSON.stringify(json))