suchen

Heim  >  Fragen und Antworten  >  Hauptteil

javascript – Datenformatkonvertierung, bitte helfen Sie

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

<code>    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],</code>

So konvertieren Sie

in:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

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

  }</code>

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

伊谢尔伦伊谢尔伦2842 Tage vor969

Antworte allen(3)Ich werde antworten

  • 扔个三星炸死你

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

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

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

    Antwort
    0
  • ringa_lee

    ringa_lee2017-06-12 09:31:38

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

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    41

    42

    43

    <code class="js">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))</code>

    执行结果:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    <code class="text">➜  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': '其它区' } }</code>

    Antwort
    0
  • 淡淡烟草味

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

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

    随意转换.

    Antwort
    0
  • StornierenAntwort