Guest User

Untitled

a guest
Jun 18th, 2018
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.79 KB | None | 0 0
  1. const childs = [
  2. {
  3. id: 'foo|bar|baz|bug',
  4. name: 'foo, bar, baz, bugger',
  5. },
  6. {
  7. id: 'foo',
  8. name: 'foorer'
  9. },
  10. {
  11. id: 'foo|bar',
  12. name: 'foo, barer',
  13. },
  14. {
  15. id: 'foo|bar|kek',
  16. name: 'foo, bar, keker',
  17. },
  18. {
  19. id: 'bad|bar|kek',
  20. name: 'bad, bar, keker',
  21. }
  22. ]
  23.  
  24. function goDeeper(tree, levels, child) {
  25. let curentLevel = levels.shift();
  26. if (levels.length > 0) {
  27. tree[curentLevel] = tree[curentLevel] || {};
  28. return goDeeper(tree[curentLevel], levels, child);
  29. } else {
  30. tree[curentLevel] = {...child, ...tree[curentLevel]};
  31. return tree;
  32. }
  33. }
  34.  
  35. function addLevel(child, tree) {
  36. let levels = child.id.split('|');
  37. goDeeper(tree, levels, child);
  38. return tree;
  39. }
  40.  
  41. let tree = childs.reduce((acc, c) => {
  42. addLevel(c, acc);
  43. return acc;
  44. }, {})
Add Comment
Please, Sign In to add comment