JSFiddle - React, Tailwind, and code Playground
by jrab227
JavaScript
var organizations = [{
id: 1,
parentId: 2
}, {
id: 3,
parentId: 2
}, {
id: 5,
parentId: 2
}, {
id: 6,
parentId: 0
}, {
id: 4,
parentId: 5
}, {
id: 2,
}, {
id: 0
}];
var organizationsHash = organizations.reduce(function(agg, next) {
agg.set(next.id, next);
return agg;
}, new Map());
organizations.map(function(next) {
if (next.parentId !== undefined) {
let parent = organizationsHash.get(next.parentId);
if (!parent.children) {
parent.children = [next];
} else {
parent.children.push(next);
}
}
});
var organizationTree = Array.from(organizationsHash.keys()).reduce(function(agg, key){
let org = organizationsHash.get(key);
if (org.parentId === undefined) {
agg.push(org);
}
return agg;
}, []);
console.log(organizationTree);