省市县/区 数据字典及查询方法

最近用到mint-ui的Picker, 做省市区/县联动,需要传入对应的数组,鉴于网上对于区/县一级信息较少,且数据结构不方便做查询,所以自己整理了一版。


省市区/县 信息来自政府网站行政区划,有兴趣的朋友可以自己查看一下。

因为上面数据比较杂乱,一个个复制麻烦,所以写了段代码,把数据爬出来。

var str = '{\n\t'
$('.cate ul').each(function (index, item) {
  if (index === 0) {
    str += '\''+ $(item).find('span').text() + '\':'+' '+'['
  } else {
    var arr = []
    $(item).find('li').each(function (index, item) {
      if (index === 0) {
        str += '{\'' + $(item).find('a').text() + '\':'+' '
      } else {
        if (index === 1) {
          str += '[\'' + $(item).find('a').text() + '\','+' '
        } else {
          if ($(item).find('a').text() !== '') {
            str += '\'' + $(item).find('a').text() + '\','+' '
          } 
        }
      }
    })
    str += ']},'
  }
})
str += ']},'
console.log(str)

不是很完整,也不是绝对自动化,因为他们网站重点内容的类名也不一样,就半自动半手动吧
这里写图片描述

数据格式:

addr = [
    {
        '吉林省': [
          {'长春市': ['南关区', '宽城区', '朝阳区', '二道区', '绿园区', '双阳区', '九台区', '农安县', '榆树市', '德惠市']
      },
      {...}    
    }
]

数据比较多,放在github传送门

查询方法:

/**
 * 查询省市区/县数组
 * @param {string} province [省]
 * @param {string} city     [市]
 * @param {string} arr      [省市区/县字典]
 * @使用方法:
 * 1. 查询省列表 PCA_select('', '', addr)
 * 2. 查询省下市列表  PCA_select(province, '', addr)
 * 3. 查询某市下县/区列表  PCA_select(province, city, addr)
 */
function PCA_select (province, city, arr) {
  if (city === '') {
    if (province === '') {
      // @TODO 求省数组
      var provinceArr = []
    } else {
      // @TODO 求province省下的所有市
      var cityArr = []
    }
  } else {
    // @TODO 求province下,city下的区/县
    var areaArr = []
  }
  arr.forEach(function (item, index, array) {
    for (var pro in item) {
      if (provinceArr instanceof Array) {
        provinceArr.push(pro)
      } else {
        // @TODO 查询市或者区/县
        if (pro === province) {
          item[pro].forEach(function (item, index, array) {
            for (var cit in item) {
              if (cityArr instanceof Array) {
                cityArr.push(cit)
              } else {
                if (cit === city) {
                  if (areaArr instanceof Array) {
                    areaArr = item[cit]
                  }
                }
              }
            }
          })
        }
      }
    }
  })
  return provinceArr || cityArr || areaArr
}
console.log(PCA_select('', '', addr))

猜你喜欢

转载自blog.csdn.net/a562550212/article/details/78606745