繁体   English   中英

嵌套数组树节点 JS

[英]Nested Array Tree Node JS

我将 2 arrays 与 ID 进行比较,并添加嵌套子对象以生成树。

如果您查看将issue_iddescendents_parent_issue_id进行比较的代码

我能够生成树,但一个孩子只添加了 1 个 object。 期望树级嵌套对象。

Following Code Output

[{
    "issue_id": 2,
    "parent_issue_id": null,
    "issue": "Availability",
    "issue_code": null,
    "hierarchy_level": 1,
    "children": [{
        "issue_id": 7,
        "parent_issue_id": 2,
        "issue": "Breakdown",
        "issue_code": "bd7catA",
        "entity_id": null,
        "hierarchy_level": 2,
        "children": [{
            "issue_id": 881,
            "parent_issue_id": 7,
            "issue": "Hydraulic arm failure",
            "issue_code": null,
            "entity_id": 52,
            "hierarchy_level": 3
        }]
    }]
}, {
    "issue_id": 1,
    "parent_issue_id": null,
    "issue": "Loading",
    "issue_code": null,
    "hierarchy_level": 1
}, {
    "issue_id": 3,
    "parent_issue_id": null,
    "issue": "Performance",
    "issue_code": null,
    "hierarchy_level": 1
}, {
    "issue_id": 4,
    "parent_issue_id": null,
    "issue": "Quality",
    "issue_code": null,
    "hierarchy_level": 1
}] 

My Code

 const issuesList = [ { "issue_id": 2, "parent_issue_id": null, "issue": "Availability", "issue_code": null, "hierarchy_level": 1 }, { "issue_id": 1, "parent_issue_id": null, "issue": "Loading", "issue_code": null, "hierarchy_level": 1 }, { "issue_id": 3, "parent_issue_id": null, "issue": "Performance", "issue_code": null, "hierarchy_level": 1 }, { "issue_id": 4, "parent_issue_id": null, "issue": "Quality", "issue_code": null, "hierarchy_level": 1 } ]; const issues = [{ "issue_id": 2, "parent_issue_id": null, "issue": "Availability", "issue_code": null, "entity_id": null, "hierarchy_level": 1, "descendents_issue_id": 7, "descendents_parent_issue_id": 2, "descendents_issue": "Breakdown", "descendents_issue_code": "bd7catA", "descendents_entity_id": null, "descendents_hierarchy_level": 2, "descendents_issuesancestor_issues_issue_id": 7, "descendents_issuesancestor_ancestor_issue_id": 2 }, { "issue_id": 2, "parent_issue_id": null, "issue": "Availability", "issue_code": null, "entity_id": null, "hierarchy_level": 1, "descendents_issue_id": 881, "descendents_parent_issue_id": 7, "descendents_issue": "Hydraulic arm failure", "descendents_issue_code": null, "descendents_entity_id": 52, "descendents_hierarchy_level": 3, "descendents_issuesancestor_issues_issue_id": 881, "descendents_issuesancestor_ancestor_issue_id": 2 }, { "issue_id": 2, "parent_issue_id": null, "issue": "Availability", "issue_code": null, "entity_id": null, "hierarchy_level": 1, "descendents_issue_id": 8, "descendents_parent_issue_id": 2, "descendents_issue": "Setup/ Changeover", "descendents_issue_code": "st8catA", "descendents_entity_id": null, "descendents_hierarchy_level": 2, "descendents_issuesancestor_issues_issue_id": 8, "descendents_issuesancestor_ancestor_issue_id": 2 }, { "issue_id": 2, "parent_issue_id": null, "issue": "Availability", "issue_code": null, "entity_id": null, "hierarchy_level": 1, "descendents_issue_id": 942, "descendents_parent_issue_id": 7, "descendents_issue": "Pump Overload", "descendents_issue_code": null, "descendents_entity_id": 52, "descendents_hierarchy_level": 3, "descendents_issuesancestor_issues_issue_id": 942, "descendents_issuesancestor_ancestor_issue_id": 2 } ]; function processIssues(arr, arrayB) { return arr.reduce((result, item) => { const itemInB = arrayB.find(itemB => itemB.descendents_parent_issue_id == item.issue_id) if (itemInB) { let child = []; child.push({ issue_id: itemInB.descendents_issue_id, parent_issue_id: itemInB.descendents_parent_issue_id, issue: itemInB.descendents_issue, issue_code: itemInB.descendents_issue_code, entity_id: itemInB.descendents_entity_id, hierarchy_level: itemInB.descendents_hierarchy_level }); item.children = child; } if (item.children) { processIssues(item.children, arrayB) } return [...result, item]; }, []); } var sourceIssue = processIssues(issuesList, issues); console.log(JSON.stringify(sourceIssue));

Expected output

[{
    "issue_id": 2,
    "parent_issue_id": null,
    "issue": "Availability",
    "issue_code": null,
    "hierarchy_level": 1,
    "children": [{
        "issue_id": 7,
        "parent_issue_id": 2,
        "issue": "Breakdown",
        "issue_code": "bd7catA",
        "entity_id": null,
        "hierarchy_level": 2,
        "children": [{
            "issue_id": 881,
            "parent_issue_id": 7,
            "issue": "Hydraulic arm failure",
            "issue_code": null,
            "entity_id": 52,
            "hierarchy_level": 3
        },{
            "issue_id": 942,
            "parent_issue_id": 7,
            "issue": "Pump Overload",
            "issue_code": null,
            "entity_id": 52,
            "hierarchy_level": 3
          }]
    }]
}, {
    "issue_id": 1,
    "parent_issue_id": null,
    "issue": "Loading",
    "issue_code": null,
    "hierarchy_level": 1
}, {
    "issue_id": 3,
    "parent_issue_id": null,
    "issue": "Performance",
    "issue_code": null,
    "hierarchy_level": 1
}, {
    "issue_id": 4,
    "parent_issue_id": null,
    "issue": "Quality",
    "issue_code": null,
    "hierarchy_level": 1
}]

请帮忙

 const issuesList = [ { "issue_id": 2, "parent_issue_id": null, "issue": "Availability", "issue_code": null, "hierarchy_level": 1 }, { "issue_id": 1, "parent_issue_id": null, "issue": "Loading", "issue_code": null, "hierarchy_level": 1 }, { "issue_id": 3, "parent_issue_id": null, "issue": "Performance", "issue_code": null, "hierarchy_level": 1 }, { "issue_id": 4, "parent_issue_id": null, "issue": "Quality", "issue_code": null, "hierarchy_level": 1 } ]; const issues = [{ "issue_id": 2, "parent_issue_id": null, "issue": "Availability", "issue_code": null, "entity_id": null, "hierarchy_level": 1, "descendents_issue_id": 7, "descendents_parent_issue_id": 2, "descendents_issue": "Breakdown", "descendents_issue_code": "bd7catA", "descendents_entity_id": null, "descendents_hierarchy_level": 2, "descendents_issuesancestor_issues_issue_id": 7, "descendents_issuesancestor_ancestor_issue_id": 2 }, { "issue_id": 2, "parent_issue_id": null, "issue": "Availability", "issue_code": null, "entity_id": null, "hierarchy_level": 1, "descendents_issue_id": 881, "descendents_parent_issue_id": 7, "descendents_issue": "Hydraulic arm failure", "descendents_issue_code": null, "descendents_entity_id": 52, "descendents_hierarchy_level": 3, "descendents_issuesancestor_issues_issue_id": 881, "descendents_issuesancestor_ancestor_issue_id": 2 }, { "issue_id": 2, "parent_issue_id": null, "issue": "Availability", "issue_code": null, "entity_id": null, "hierarchy_level": 1, "descendents_issue_id": 8, "descendents_parent_issue_id": 2, "descendents_issue": "Setup/ Changeover", "descendents_issue_code": "st8catA", "descendents_entity_id": null, "descendents_hierarchy_level": 2, "descendents_issuesancestor_issues_issue_id": 8, "descendents_issuesancestor_ancestor_issue_id": 2 }, { "issue_id": 2, "parent_issue_id": null, "issue": "Availability", "issue_code": null, "entity_id": null, "hierarchy_level": 1, "descendents_issue_id": 942, "descendents_parent_issue_id": 7, "descendents_issue": "Pump Overload", "descendents_issue_code": null, "descendents_entity_id": 52, "descendents_hierarchy_level": 3, "descendents_issuesancestor_issues_issue_id": 942, "descendents_issuesancestor_ancestor_issue_id": 2 } ]; function processIssues(arr, arrayB) { return arr.reduce((result, item) => { const itemInB = arrayB.find(itemB => itemB.descendents_parent_issue_id == item.issue_id) if (itemInB) { let child = []; child.push({ issue_id: itemInB.descendents_issue_id, parent_issue_id: itemInB.descendents_parent_issue_id, issue: itemInB.descendents_issue, issue_code: itemInB.descendents_issue_code, entity_id: itemInB.descendents_entity_id, hierarchy_level: itemInB.descendents_hierarchy_level }); item.children = processIssues(child, arrayB); } return [...result, item]; }, []); } var sourceIssue = processIssues(issuesList, issues); console.log(JSON.stringify(sourceIssue));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM