var node = { "title":"node 1", "parentId":"", "id":"1", "children":[]};
indent(by:any, pad:any) {
return by > 0 ? new Array(by + 1).join(pad) : ""; }
buildChildren(members: SomeObject[], parent: SomeObject) { var ret: SomeObject[] = []; for (var i in members) { if (members[i].parentId == parent.id) { members[i].parent = parent; var children = buildChildren(members, members[i]) if (children.length) { members[i].children = children; } ret.push(members[i]) } } return ret; }
recursiveBuilder(node: SomeObject, depth?: number) { depth = depth || 0; let parentMemberName = ""; if (node.parent) { node.parent!.title } // indent the children depth++; // process the children if (node.children) { node.children.forEach(child => { recursiveBuilder(child, depth); }); } // clear depth depth--; }
Reference
- https://ramblings.mcpher.com/gassnippets2/javascript-recursion-primer/- https://ramblings.mcpher.com/gassnippets2/more-recursion-parents-and-children/
- https://www.htmlgoodies.com/javascript/recursive-tree-node-angular/
No comments:
Post a Comment