Heim  >  Fragen und Antworten  >  Hauptteil

javascript – Gibt die JSON-Baumstruktur mit der angegebenen Tiefe zurück

Es gibt ein Stück JSON wie folgt:
Entsprechend der Baumebene ist es Ebene 3. Ich möchte jetzt zu den ersten beiden Ebenen zurückkehren und die dritte Ebene verwerfen. Wie kann ich Javascript-Code verwenden, um dies zu erreichen?
Ursprüngliche Struktur:
[{

            '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': []
                }
            ]
        }]

Verarbeitete Struktur:

    [{
            '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': []
                }
            ]
        }]    
        
黄舟黄舟2733 Tage vor466

Antworte allen(2)Ich werde antworten

  • 巴扎黑

    巴扎黑2017-05-19 10:25:17

    树的操作用递归比较方便

    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
    }

    Antwort
    0
  • 世界只因有你

    世界只因有你2017-05-19 10:25:17

    你直接循环json的两级重新组装个新的json不就可以了吗。

    Antwort
    0
  • StornierenAntwort