javascript – Datenformatkonvertierung, bitte helfen Sie
伊谢尔伦
伊谢尔伦 2017-06-12 09:29:38
0
3
876
    110000:['北京市', 1],
    110100:['北京市', 110000],
    110101:['东城区', 110100],
    110102:['西城区', 110100],
    110105:['朝阳区', 110100],
    110106:['丰台区', 110100],
    110107:['石景山区', 110100],
    110108:['海淀区', 110100],
    110109:['门头沟区', 110100],
    110111:['房山区', 110100],
    110112:['通州区', 110100],
    110113:['顺义区', 110100],
    110114:['昌平区', 110100],
    110115:['大兴区', 110100],
    110116:['怀柔区', 110100],
    110117:['平谷区', 110100],
    110199:['其它区', 110100],
    110200:['县', 110000],
    110228:['密云县', 110200],
    110229:['延庆县', 110200],
So konvertieren Sie

in:

"86": {
    "110000": "北京市",
    "120000": "天津市",
    "130000": "河北省",
    "140000": "山西省",
    "150000": "内蒙古自治区",
    "210000": "辽宁省",
    "220000": "吉林省",
    "230000": "黑龙江省",
    "310000": "上海市",
    "320000": "江苏省",
    "330000": "浙江省",
    "340000": "安徽省",
    "350000": "福建省",
    "360000": "江西省",
    "370000": "山东省",
    "410000": "河南省",
    "420000": "湖北省",
    "430000": "湖南省",
    "440000": "广东省",
    "450000": "广西壮族自治区",
    "460000": "海南省",
    "500000": "重庆市",
    "510000": "四川省",
    "520000": "贵州省",
    "530000": "云南省",
    "540000": "西藏自治区",
    "610000": "陕西省",
    "620000": "甘肃省",
    "630000": "青海省",
    "640000": "宁夏回族自治区",
    "650000": "新疆维吾尔自治区",
    "710000": "台湾省",
    "810000": "香港特别行政区",
    "820000": "澳门特别行政区"
  },
  "110000": {
    "110100": "市辖区"
  },
  "110100": {
    "110101": "东城区",
    "110102": "西城区",
    "110105": "朝阳区",
    "110106": "丰台区",
    "110107": "石景山区",
    "110108": "海淀区",
    "110109": "门头沟区",
    "110111": "房山区",
    "110112": "通州区",
    "110113": "顺义区",
    "110114": "昌平区",
    "110115": "大兴区",
    "110116": "怀柔区",
    "110117": "平谷区",
    "110228": "密云县",
    "110229": "延庆县"
  }

Was ist mit diesem Format? Meine Fähigkeiten sind begrenzt und ich kann mir wirklich nicht vorstellen, dass eine solche Transformation erreicht werden kann.

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

Antworte allen(3)
扔个三星炸死你

手机回答,没办法给你上代码,但是大概思路应该是:
1.先理一下你的需求,如果我理解错了,下面的就不用看了:
你是想把原来的一维的,没有层级结构的数据按照国家代号,省市代号,地区代号这样分开,下一级地区的key是上一级省市的key,通过代码可以直接从国家到省到市,一级一级的找到某地区。
2.首先,你的数据是一个对象,每个属性是对应值的地区代号,而值是一个数组,第二个元素是他的父节点代号,这就好办了。
3.先建立一个空对象。
4.循环遍历原对象。
5.每拿到一个原对象的属性,先判断他的值(也就是二值数组)的第二个值,如果是1,说明是顶级地区,也就是省或者直辖市,把这些写到新建立对象中,写在86国家代码那个属性下,
6.如果拿到的第二个值不是1,说明他不是顶级的省或者市,而是某个地区,去新对象下去找有没有该代码对应的省或地区,如果没有,就在新对象中新建,有则直接写到对应代码中。
7.这样就可以按照 国家~省/直辖市~地区,的方式划分开
8.看到你还特意标明了,直辖市,根据你给的数据,如果省名称和直辖市名称一样的话,就表明成直辖市就行了

9.手机打,会有很多不好理解的地方,如果方法不能理解或者有错,请直接忽视

左手右手慢动作

一个简单的示例如下(源数据格式非 JSON,故简单实现中强行 eval 之):

const src = `
  110000: ['北京市', 1],
  110100: ['北京市', 110000],
  110101: ['东城区', 110100],
  110102: ['西城区', 110100],
  110105: ['朝阳区', 110100],
  110106: ['丰台区', 110100],
  110107: ['石景山区', 110100],
  110108: ['海淀区', 110100],
  110109: ['门头沟区', 110100],
  110111: ['房山区', 110100],
  110112: ['通州区', 110100],
  110113: ['顺义区', 110100],
  110114: ['昌平区', 110100],
  110115: ['大兴区', 110100],
  110116: ['怀柔区', 110100],
  110117: ['平谷区', 110100],
  110199: ['其它区', 110100],
  110200: ['县', 110000],
  110228: ['密云县', 110200],
  110229: ['延庆县', 110200]
`

function convert (src) {
  // hack 将结构字符串 eval 转为对象
  const tmpObj = eval('(function () { return {' + src + '} })()')

  // 输出目标格式,硬编码一条简单数据
  const result = { 86: {}, 110000: { 110100: '市辖区' }, 110100: {} }
  // [110000, 110100...]
  const tmpArr = Object.keys(tmpObj)
  tmpArr.forEach(key => {
    result[86][key] = tmpObj[key][0]
  })
  tmpArr.forEach(key => {
    if (tmpObj[key][1] === 110100) {
      result[110100][key] = tmpObj[key][0]
    }
  })
  return result
}

console.log(convert(src))

执行结果:

➜  Desktop node demo
{ '86': 
   { '110000': '北京市',
     '110100': '北京市',
     '110101': '东城区',
     '110102': '西城区',
     '110105': '朝阳区',
     '110106': '丰台区',
     '110107': '石景山区',
     '110108': '海淀区',
     '110109': '门头沟区',
     '110111': '房山区',
     '110112': '通州区',
     '110113': '顺义区',
     '110114': '昌平区',
     '110115': '大兴区',
     '110116': '怀柔区',
     '110117': '平谷区',
     '110199': '其它区',
     '110200': '县',
     '110228': '密云县',
     '110229': '延庆县' },
  '110000': { '110100': '市辖区' },
  '110100': 
   { '110101': '东城区',
     '110102': '西城区',
     '110105': '朝阳区',
     '110106': '丰台区',
     '110107': '石景山区',
     '110108': '海淀区',
     '110109': '门头沟区',
     '110111': '房山区',
     '110112': '通州区',
     '110113': '顺义区',
     '110114': '昌平区',
     '110115': '大兴区',
     '110116': '怀柔区',
     '110117': '平谷区',
     '110199': '其它区' } }
淡淡烟草味

https://windqyoung.github.io/...

随意转换.

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!