I am comparing 2 arrays with the ID's and adding nested children objects to generate the tree.
if you look in the code comparing issue_id
with descendents_parent_issue_id
I am able to generate the tree but a children is adding only 1 object. Expecting tree level nested objects.
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
}]
Please help
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));
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.