Rumah  >  Soal Jawab  >  teks badan

javascript - Penukaran format data, sila bantu

    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],
Bagaimana untuk menukar

kepada:

"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": "延庆县"
  }

Bagaimana dengan format ini? Keupayaan saya terhad dan saya benar-benar tidak dapat memikirkannya. Bolehkah transformasi seperti ini dicapai?

伊谢尔伦伊谢尔伦2656 hari yang lalu833

membalas semua(3)saya akan balas

  • 扔个三星炸死你

    扔个三星炸死你2017-06-12 09:31:38

    Saya tidak boleh memberi anda kod untuk jawapan telefon bimbit, tetapi idea umum sepatutnya:
    1 Mari kita selesaikan keperluan anda dahulu. Jika saya salah faham, anda tidak perlu membaca perkara berikut:
    Anda ingin membuat satu dimensi asal, data tanpa struktur hierarki dipisahkan mengikut kod negara, kod wilayah dan bandar, dan kod wilayah Kunci wilayah peringkat bawah adalah kunci wilayah dan bandar melalui kod, anda boleh terus pergi dari negara ke wilayah ke bandar, peringkat demi peringkat Cari wilayah.
    2 Pertama sekali, data anda ialah objek Setiap atribut ialah kod wilayah bagi nilai yang sepadan, dan nilainya ialah tatasusunan.
    3 Buat objek kosong dahulu.
    4 Gelung melalui objek asal.
    5 Setiap kali anda mendapat atribut objek asal, nilai pertama nilai kedua (iaitu, tatasusunan binari, ia bermakna ia adalah rantau peringkat atas, iaitu, a). wilayah atau perbandaran Tulis ini kepada yang baharu Apabila mencipta objek, tulis di bawah atribut 86 kod negara,
    6 Jika nilai kedua yang anda perolehi bukan 1, ini bermakna ia bukan wilayah atau bandar peringkat teratas , tetapi kawasan tertentu Pergi ke objek baharu untuk melihat jika terdapat kod tersebut.
    7. Dengan cara ini, ia boleh dibahagikan mengikut negara~wilayah/perbandaran
    8 Saya melihat bahawa anda juga menandai secara khusus mengikut data yang anda berikan, jika nama wilayah dan nama perbandaran adalah sama, maknanya sama sahaja

    9 Apabila menghubungi telefon bimbit, akan ada banyak perkara yang sukar untuk difahami.

    balas
    0
  • ringa_lee

    ringa_lee2017-06-12 09:31:38

    Contoh mudah adalah seperti berikut (format data sumber bukan JSON, jadi eval dipaksa dalam pelaksanaan mudah):

    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))

    Hasil pelaksanaan:

    ➜  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': '其它区' } }

    balas
    0
  • 淡淡烟草味

    淡淡烟草味2017-06-12 09:31:38

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

    Tukar sesuka hati.

    balas
    0
  • Batalbalas