Advertisement
bobo_bobkata

Untitled

Sep 26th, 2019
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.87 KB | None | 0 0
  1. function asd(data) {
  2. let map = data.reduce((a, b) => {
  3. let tokens = b.split(new RegExp("\\|"));
  4. let systemName = tokens[0].trim();
  5. let componentName = tokens[1].trim();
  6. let subComponentName = tokens[2].trim();
  7. if (!a.hasOwnProperty(systemName)) {
  8. a[systemName] = {};
  9. }
  10. if (!a[systemName].hasOwnProperty(componentName)) {
  11. a[systemName][componentName] = [];
  12. }
  13. a[systemName][componentName].push(subComponentName);
  14. return a;
  15. }, {});
  16. let toReturn = "";
  17. let keysSorted = Object.keys(map).sort((a, b) => {
  18. if (Object.getOwnPropertyNames(map[a]).length > Object.getOwnPropertyNames(map[b]).length) {
  19. return -1;
  20. } else if (Object.getOwnPropertyNames(map[a]).length === Object.getOwnPropertyNames(map[b]).length) {
  21. return a.localeCompare(b);
  22. } else {
  23. return 1;
  24. }
  25. });
  26. keysSorted.forEach(mapKey => {
  27. let innerKeysSorted = Object.keys(map[mapKey]).sort((a, b) => map[mapKey][b].length - map[mapKey][a].length);
  28. toReturn += mapKey + "\r\n";
  29. innerKeysSorted.forEach(innerMapKey => {
  30. toReturn += `|||${innerMapKey}\r\n`;
  31. map[mapKey][innerMapKey].forEach(el => toReturn += `||||||${el}\r\n`);
  32. });
  33. });
  34. return toReturn.trim();
  35. }
  36.  
  37. const data = ['SULS | Main Site | Home Page',
  38. 'SULS | Main Site | Login Page',
  39. 'SULS | Main Site | Register Page',
  40. 'SULS | Judge Site | Login Page',
  41. 'SULS | Judge Site | Submittion Page',
  42. 'Lambda | CoreA | A23',
  43. 'SULS | Digital Site | Login Page',
  44. 'Lambda | CoreB | B24',
  45. 'Lambda | CoreA | A24',
  46. 'Lambda | CoreA | A25',
  47. 'Lambda | CoreC | C4',
  48. 'Indice | Session | Default Storage',
  49. 'Indice | Session | Default Security']
  50. ;
  51.  
  52. console.log(asd(data));
  53. ;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement