根据身份证号,取得行政区划的Javascript实现

项目里需要一个根据身份证号,取得发证地行政区划的的功能。

网上搜了一下,多数都是服务端的实现

这个功能说白了就是一个映射,实在不想放在服务端,想用js的dict实现。

网上有一个js的实现,但是映射好像不很全,有些地区映射不到。

于是决定自己弄一个。

身份证号到行政区划的映射是从ip138那个网站的js里整理出来的,测试了一下,没有发现映射不到地区的身份证号。

现在分享给大家。

下面贴出的代码,数据映射部分,只列出了少数的省市县

完整的js文件有190k,发博客居然不能带附件。。。鄙视下

大家来这里下载吧。https://files.cnblogs.com/baibaluo/id_card_area.js

/**
* 根据身份证号,取得行政区划的js
*/

var id_card_area = {

//根据身份证号取得发证地,身份证号前六位映射到地区的结果例如“110101--北京市东城区”“411202--河南省三门峡市湖滨区”
getAreaByIdCard : function(idCard) {
if(!idCard || idCard.length < 6) return '';
var provinceNo = idCard.substring(0, 2) + '0000';
var cityNo = idCard.substring(0, 4) + '00';
var countyNo = idCard.substring(0, 6);

var provinceName = this.data.province[provinceNo];
var cityName = this.data.city[cityNo];
var countyName = this.data.county[countyNo];

var result;
result
= (provinceName ? provinceName : '') + '' + (cityName ? cityName : '') + '' + (countyName ? countyName : '');

return result;
},

//映射数据,2011年3月从ip138的身份证号前六位查询的js中整理出来
//数据稍微有点大,这里只列出一部分省市县,完整数据的js请从附件下载
data:{
province:
{
110000:"北京市",
120000:"天津市",
130000:"河北省",
410000:"河南省"
},
city:{
130100:"石家庄市",
130200:"唐山市",
130300:"秦皇岛市",
130400:"邯郸市",
130500:"邢台市",
130600:"保定市",
130700:"张家口市",
130800:"承德市",
130900:"沧州市",
131000:"廊坊市",
131100:"衡水市",
132100:"邯郸地区",
132200:"邢台地区",
132300:"石家庄市",
132400:"保定地区",
132500:"张家口地区",
132600:"承德地区",
132800:"廊坊地区",
132900:"沧州地区",
133000:"衡水地区",
140100:"太原市",
140200:"大同市",
140300:"阳泉市",
140400:"长治市",
140500:"晋城市",
140600:"朔州市",
140700:"晋中市",
140800:"运城市",
140900:"忻州市",
141000:"临汾市",
141100:"吕梁市"
}
county:{
110101:"东城区",
110102:"西城区",
110103:"崇文区",
110104:"宣武区",
110105:"朝阳区",
110106:"丰台区",
110107:"石景山区",
110108:"海淀区",
110109:"门头沟区",
110110:"燕山区",
110111:"房山区",
110112:"通州区",
110113:"顺义区",
110114:"昌平区",
110115:"大兴区",
110116:"怀柔区",
110117:"平谷区",
110221:"昌平县",
110222:"顺义县",
110223:"通县",
110224:"大兴县",
110225:"房山县",
110226:"平谷县",
110227:"怀柔县",
110228:"密云县",
110229:"延庆县",
120101:"和平区",
120102:"河东区",
120103:"河西区",
120104:"南开区",
120105:"河北区",
120106:"红桥区",
120107:"塘沽区",
120108:"汉沽区",
120109:"大港区",
120110:"东丽区",
120111:"西青区",
120112:"津南区",
120113:"北辰区",
120114:"武清区",
120115:"宝坻区",
120221:"宁河县",
120222:"武清县",
120223:"静海县",
120224:"宝坻县",
120225:"蓟县",
130101:"市辖区",
130102:"长安区",
130103:"桥东区",
130104:"桥西区",
130105:"新华区",
130106:"郊区",
130107:"井陉矿区",
130108:"裕华区",
130121:"井陉县",
130122:"获鹿县",
130123:"正定县",
130124:"栾城县",
130125:"行唐县",
130126:"灵寿县",
130127:"高邑县",
130128:"深泽县",
130129:"赞皇县",
130130:"无极县",
130131:"平山县",
130132:"元氏县",
130133:"赵县",
130181:"辛集市",
130182:"藁城市",
130183:"晋州市",
130184:"新乐市"
}
}


}
原文地址:https://www.cnblogs.com/baibaluo/p/2071255.html