簡體   English   中英

使用Javascript的JSON數據中的層次深度邏輯

[英]Hierarchical Depth Level logic in JSON data using Javascript

只想知道您在此問題中使用javascript的代碼邏輯。 我想在層次數據中進行深度級別跟蹤。 數據可以具有更多層。

這是我的樣本數據

原始數據

我想在每個屬性中放置一個depth屬性

編輯數據

樣本數據

[{
"id": 1,
"label": "System",
"parent_id": null,
"description": "System Manager",
"children": [{
    "id": 2,
    "label": "base",
    "parent_id": 1,
    "description": "Base Manager",
    "children": [{
        "id": 3,
        "label": "Menus",
        "parent_id": 2,
        "description": "menu manager",

    },
    {
        "id": 4,
        "label": "Roles",
        "parent_id": 2,
        "description": "Role Manager",

    },
    {
        "id": 5,
        "label": "Users",
        "parent_id": 2,
        "description": "User Manager",

    }]
}]
},
{
    "id": 6,
    "label": "Customs",
    "parent_id": null,
    "description": "Custom Manager",
    "children": [{
        "id": 7,
        "label": "CustomList",
        "parent_id": 6,
        "description": "CustomList",

    }]
}

但是,你去了。 我將您的數據簡化為一個簡單的示例。 如您所見,Iam使用的是遞歸函數,每次調用都會將其遞增到下一個級別。

 var example = [{ "id": 1, "label": "System", "parent_id": null, "description": "System Manager", "children": [{ "id": 2, "label": "base", "parent_id": 1, "description": "Base Manager", "children": [{ "id": 3, "label": "Menus", "parent_id": 2, "description": "menu manager" }, { "id": 4, "label": "Roles", "parent_id": 2, "description": "Role Manager", }, { "id": 5, "label": "Users", "parent_id": 2, "description": "User Manager" }] }] }, { "id": 6, "label": "Customs", "parent_id": null, "description": "Custom Manager", "children": [{ "id": 7, "label": "CustomList", "parent_id": 6, "description": "CustomList" }] }]; var res = document.getElementById("res"); var addDepth = function(json, depth){ return json.map(e => { e.depth = depth; if(e.children){ e.children = addDepth(e.children, depth + 1); } return e; }); } res.innerHTML = JSON.stringify(addDepth(example, 0), undefined, 2); 
 <pre id="res"></pre> 

暫無
暫無

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

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