Advertisement
Guest User

SystemComps

a guest
Sep 24th, 2020
203
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function x(input = []) {
  2.     let obj = new Map;
  3.  
  4.     input.forEach(line => {
  5.         let [systemName, componentName, subcomponentName] = line.split(' | ');
  6.  
  7.         if (!obj.has(systemName)) {
  8.             obj.set(systemName, new Map);
  9.         }
  10.  
  11.         if (!obj.get(systemName).has(componentName)) {
  12.             obj.get(systemName).set(componentName, [])
  13.         }
  14.  
  15.         obj.get(systemName).get(componentName).push(subcomponentName);
  16.  
  17.     });
  18.  
  19.     return [...obj.keys()]
  20.         .sort((a, b) => systemSort(a, b, obj))
  21.         .forEach((systemName) => {
  22.             console.log(systemName);
  23.  
  24.             const components = [...obj.get(systemName).keys()]
  25.                 .sort((a, b) => obj.get(systemName).get(b).length - obj.get(systemName).get(b).length)
  26.                 .forEach(componentName => {
  27.                     console.log(`|||${componentName}`);
  28.                     for (const subcomponent of obj.get(systemName).get(componentName)) {
  29.                         console.log(`||||||${subcomponent}`);
  30.                     };
  31.                 });
  32.         });
  33.  
  34.     function systemSort(sysA, sysB, obj) {
  35.  
  36.         let aComponents = obj.get(sysA).size;
  37.         let bComponents = obj.get(sysB).size;
  38.  
  39.         if (aComponents > bComponents) {
  40.             return -1;
  41.         };
  42.  
  43.         if (aComponents < bComponents) {
  44.             return 1;
  45.         };
  46.  
  47.         return sysA.toLowerCase().localeCompare(sysB.toLocaleLowerCase());
  48.     }
  49. }
  50.  
  51. console.log(x(['SULS | Main Site | Home Page',
  52.     'SULS | Main Site | Login Page',
  53.     'SULS | Main Site | Register Page',
  54.     'SULS | Judge Site | Login Page',
  55.     'SULS | Judge Site | Submittion Page',
  56.     'Lambda | CoreA | A23',
  57.     'SULS | Digital Site | Login Page',
  58.     'Lambda | CoreB | B24',
  59.     'Lambda | CoreA | A24',
  60.     'Lambda | CoreA | A25',
  61.     'Lambda | CoreC | C4',
  62.     'Indice | Session | Default Storage',
  63.     'Indice | Session | Default Security']))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement