javascript - 依指定的depth返回樹形JSON結構
黄舟
黄舟 2017-05-19 10:23:17
0
2
417

有一段JSON,如下:
按樹狀層級來說,是3級,我現在希望返回前2級,第3級丟掉,要如何用javascript程式碼來實現呢?
原來的結構:
[{

#
            'id': 1,
            'title': 'node1',
            'nodes': [
                {
                    'id': 11,
                    'title': 'node1.1',
                    'nodes': **[
                        {
                            'id': 111,
                            'title': 'node1.1.1',
                            'nodes': []
                        }**
                    ]
                },
                {
                    'id': 12,
                    'title': 'node1.2',
                    'nodes': []
                }
            ]
        }, {
            'id': 2,
            'title': 'node2',
            'nodes': [
                {
                    'id': 21,
                    'title': 'node2.1',
                    'nodes': []
                },
                {
                    'id': 22,
                    'title': 'node2.2',
                    'nodes': []
                }
            ]
        }, {
            'id': 3,
            'title': 'node3',
            'nodes': [
                {
                    'id': 31,
                    'title': 'node3.1',
                    'nodes': []
                }
            ]
        }]

處理後的結構:

    [{
            'id': 1,
            'title': 'node1',
            'nodes': [
                {
                    'id': 11,
                    'title': 'node1.1',
                    **'nodes': []**
                },
                {
                    'id': 12,
                    'title': 'node1.2',
                    'nodes': []
                }
            ]
        }, {
            'id': 2,
            'title': 'node2',
            'nodes': [
                {
                    'id': 21,
                    'title': 'node2.1',
                    'nodes': []
                },
                {
                    'id': 22,
                    'title': 'node2.2',
                    'nodes': []
                }
            ]
        }, {
            'id': 3,
            'title': 'node3',
            'nodes': [
                {
                    'id': 31,
                    'title': 'node3.1',
                    'nodes': []
                }
            ]
        }]    
        
黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回覆(2)
巴扎黑

樹的操作用遞歸比較方便

depth 為保留的層數,注意是對 'id': 1, 那層的結點呼叫。

function removeNode (root, depth) {
  if (typeof root !== 'object' || typeof depth !== 'number' || !Array.isArray(root.nodes)) { return root }
  if (depth < 1) { return {} }

  if (depth === 1) {
    root.nodes = []
  } else {
    root.nodes.forEach(node => {
      removeNode(node, depth - 1)
    })
  }

  return root
}
世界只因有你

你直接循環json的兩級重新組裝個新的json不就可以了嗎。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!