簡體   English   中英

遍歷無限的嵌套json結構

[英]Iterate over unlimited nested json structure

嗨,我有一個嵌套的JSON,也可以具有無限的層次結構。 以下是JSON的結構-

[{
    "name": "Main",
    "leaf": false,
    "id": 12,
    "ParentId": null,
    "children": [{
        "name": "Sub Main 1",
        "leaf": false,
        "id": 13,
        "ParentId": 12,
        "children": [{
            "name": "child 1",
            "id": 15,
            "ParentId": 13,
            "leaf": true
        }, {
            "name": "child 2",
            "id": 16,
            "ParentId": 13,
            "leaf": true
        }]
    }, {
        "name": "Sub Main 2",
        "leaf": false,
        "id": 14,
        "ParentId": 12,
        "children": [{
            "name": "child 1",
            "id": 17,
            "ParentId": 14,
            "leaf": true
        }, {
            "name": "child 2",
            "id": 18,
            "ParentId": 14,
            "leaf": true
        }]
    }]
}]

我希望輸出為-

[
    [{
        "name": "Main",
        "leaf": false,
        "id": 12,
        "ParentId": null,
    }, {
        "name": "Sub Main 1",
        "leaf": false,
        "id": 13,
        "ParentId": 12
    }, {
        "name": "child 1",
        "id": 15,
        "ParentId": 13,
        "leaf": true
    }],
    [{
        "name": "Main",
        "leaf": false,
        "id": 12,
        "ParentId": null,
    }, {
        "name": "Sub Main 1",
        "leaf": false,
        "id": 13,
        "ParentId": 12
    }, {
        "name": "child 2",
        "id": 16,
        "ParentId": 13,
        "leaf": true
    }],
    [{
        "name": "Main",
        "leaf": false,
        "id": 12,
        "ParentId": null,
    }, {
        "name": "Sub Main 2",
        "leaf": false,
        "id": 13,
        "ParentId": 12
    }, {
        "name": "child 1",
        "id": 15,
        "ParentId": 13,
        "leaf": true
    }],
    [{
        "name": "Main",
        "leaf": false,
        "id": 12,
        "ParentId": null,
    }, {
        "name": "Sub Main 2",
        "leaf": false,
        "id": 13,
        "ParentId": 12
    }, {
        "name": "child 1",
        "id": 15,
        "ParentId": 13,
        "leaf": true
    }]
]

任何幫助表示贊賞。

您可以將路徑存儲到葉子,然后將路徑推送到結果集。

 function getValues(array) { var result = []; array.forEach(function iter(path) { return function (o) { var temp = path.concat({ name: o.name, leaf: o.leaf, id: o.id, ParentId: o.ParentId }); if (o.children) { o.children.forEach(iter(temp)); return; } result.push(temp); }; }([])); return result; } var data = [{ name: "Main", leaf: false, id: 12, ParentId: null, children: [{ name: "Sub Main 1", leaf: false, id: 13, ParentId: 12, children: [{ name: "child 1", id: 15, ParentId: 13, leaf: true }, { name: "child 2", id: 16, ParentId: 13, leaf: true }] }, { name: "Sub Main 2", leaf: false, id: 14, ParentId: 12, children: [{ name: "child 1", id: 17, ParentId: 14, leaf: true }, { name: "child 2", id: 18, ParentId: 14, leaf: true }] }] }], result = getValues(data); console.log(result); 
 .as-console-wrapper { max-height: 100% !important; top: 0; } 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM