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);