| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- /**
- * 县级(区县)信息
- * @param {Array} arr 总数组
- * @param {Number} code 县级(区县) code
- * @param {Number} level [0,1,2,3] 返回层级
- */
- exports.findAreaChild = function findAreaChild(arr, code, level) {
- return arr.filter(item => {
- // 四个直辖市 北京:11, 上海:31,天津:12,重庆市:50
- if (/(11|31|12|50)/.test(item.province)) {
- return (new RegExp(`^${code}`)).test(item.code) && item.town !== 0;
- }
- return (new RegExp(`^${code}`)).test(item.code) && item.town === 0 && item.area !== 0;
- }).map((item) => {
- return { ...item };
- })
- }
- /**
- * 序列化省市信息
- * @param {Array} arr 总数组
- * @return {Array} [序列化后的层级总数组]
- */
- exports.findCityChild = function findCityChild(arr, code, level) {
- return arr.filter(item => {
- if (/(70|81|82)/.test(item.province)) {
- return false;
- }
- // 四个直辖市 北京:11, 上海:31,天津:12,重庆市:50
- if (/(11|31|12|50)/.test(item.province)) {
- return (new RegExp(`^${code}`)).test(item.code) && item.area !== 0 && item.town === 0;
- }
- return (new RegExp(`^${code}`)).test(item.code) && item.city !== 0 && item.area === 0 && item.town === 0;
- }).map((item) => {
- if (level > 1) {
- const codeCom = /(11|31|12|50)/.test(item.province) ? `${code}${item.city}${item.area}` : `${code}${item.city}`;
- item.children = findAreaChild(arr, codeCom, level);
- }
- delete item.town;
- delete item.province;
- return {
- ...item,
- // code: /(11|31|12|50)/.test(code) ? item.area : item.city,
- }
- });
- }
- /**
- * 序列化 省市区信息 第一级
- * @param {Array} arr 总数组
- * @param {Number} level [0,1,2,3] 返回层级
- * @return {Array} [序列化后的总数组]
- */
- exports.sortProvince = function sortProvince(arr, level) {
- if (!level) level = 3;
- return arr.filter(item => item.city === 0 && item.area === 0 && item.town === 0)
- .map((item) => {
- if (level > 0) {
- item.children = findCityChild([...arr], item.province, level);
- }
- item.code = item.province;
- if (item.children && item.children.length === 0) delete item.children;
- delete item.province;
- delete item.city;
- delete item.area;
- delete item.town;
- return { ...item };
- });
- }
|