遍历和操作具有数组的javascript对象到匹配格式的单个对象

时间:2013-04-19 14:03:39

标签: javascript arrays object

我一直在用这个绞尽脑汁,我试图用一些递归函数解决这个问题而没有快乐,所以我想我会问是否有人有任何解决方案。

我有一个JSON和数组混合的对象,简而言之,我需要删除数组,但保留它们最初找到数组的值。

这是对象/数组的console.log:

Object {type:Array [1],properties:Object}

  1. properties:Object
    1. associatedMedia:Array [1]
      1. 0:对象
        1. properties:Object
        1. url:Array [1]
          1. 0:“/ programme / p00t64wh.emp”
        2. 长度:1
        3. proto :数组[0]
        4. proto :对象
      2. type:Array [1]
        1. 0:“MediaObject”
        2. 长度:1
        3. proto :数组[0]
      3. proto :对象
      4. 长度:1
      5. proto :数组[0]
    2. byArtist:Array [1]
      1. 0:对象
        1. properties:Object
        1. name:Array [1]
          1. 0:“培养人民”
        2. 长度:1
        3. proto :数组[0]
        4. url:Array [1]
          1. 0:“/ music / artists / e0e1a584-dd0a-4bd1-88d1-c4c62895039d”
        5. 长度:1
        6. proto :数组[0]
        7. proto :对象
      2. type:Array [1]
        1. 0:“MusicGroup”
        2. 长度:1
        3. proto :数组[0]
      3. proto :对象
      4. 长度:1
      5. proto :数组[0]
    3. image:Array [1]
      1. 0:“/ radio1 / chart / artwork / ussm11002931.jpg”
      2. 长度:1
      3. proto :数组[0]
    4. name:Array [1]
      1. 0:“Pumped Up Kicks”
      2. 长度:1
      3. proto :数组[0]
    5. publication:Array [1]
      1. 0:对象
        1. properties:Object
        1. partOfSeries:Array [1]
          1. 0:对象
          1. properties:Object
            1. name:Array [1]
            1. 0:“Lauren Laverne”
            2. 长度:1
            3. proto :数组[0]
          2. url:Array [1]
            1. 0:“/ programs / b00c000j”
            2. 长度:1
            3. proto :数组[0]
          3. proto :对象
          4. type:Array [1]
            1. 0:“系列”
          5. 长度:1
          6. proto :数组[0]
          7. proto :对象
        2. 长度:1
        3. proto :数组[0]
        4. publishedOn:Array [1]
          1. 0:对象
          1. properties:Object
            1. name:Array [1]
            1. 0:“来自BBC Radio 6 Music”
            2. 长度:1
            3. proto :数组[0]
          2. url:Array [1]
            1. 0:“/ 6music /”
            2. 长度:1
            3. proto :数组[0]
          3. proto :对象
          4. type:Array [1]
            1. 0:“BroadcastService”
          5. 长度:1
          6. proto :数组[0]
          7. proto :对象
        5. 长度:1
        6. proto :数组[0]
        7. proto :对象
      2. type:Array [1]
        1. 0:“Episode”
        2. 长度:1
        3. proto :数组[0]
      3. proto :对象
      4. 长度:1
      5. proto :数组[0]
    6. proto :对象
  2. type:Array [1]
    1. 0:“MusicRecording”
    2. 长度:1
    3. proto :数组[0]
  3. proto :对象
  4. 所需的转换应该类似于下面的代码,但是如果例如“属性”仍然存在但所有数组都应该被剥离到对象中,那么这不是一个大问题。

    {
        'associatedMedia': {
            'url':'/programmes/p00t64wh.emp',
            'type':'MediaObject'
        },
        'byArtist': {
            'name':'Foster the People',
            'url':'/music/artists/e0e1a584-dd0a-4bd1-88d1-c4c62895039d',
            'type':'MusicGroup'
        },
        'publication': {
            'publishedOn':{
                'name':'From BBC Radio 6 Music',
                'url':'/6music/',
                'type':'BroadcastService'
            },
            'partOfSeries':{
                'name':'Lauren Laverne',
                'url':'programmes/b00c000j',
                'type':'Series'
            }
            'type':'http://schema.org/Episode'
        }
        'image':'/radio1/chart/artwork/ussm11002931.jpg',
        'name':'Pumped up Kicks',
        'type':'MusicRecording'
    }
    

    所有键和值都是动态分配的,但是需要转换的对象将遵循:对象>键/值> 0>属性>键/值

    提前感谢您的任何帮助:)

0 个答案:

没有答案