maymunskoa

10.Systems Register (from Objects and Classes)

Mar 3rd, 2020
190
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function solve(input){
  2.  
  3.  
  4.     class SimpleObject{
  5.         constructor(component){
  6.             this.component = component;
  7.             this.subcomponents = [];
  8.         }
  9.    
  10.         addSubComponents(value){
  11.             this.subcomponents.push(value);
  12.         }
  13.     }
  14.    
  15.     let arr = input.slice(0);
  16.  
  17.     let helper = arr.map(item=>{
  18.         return item.split(' | ');
  19.     });
  20.     helper.sort((a,b)=>{
  21.         if(a[0] === b[0]){
  22.             return a[1].localeCompare(b[1]);
  23.         }
  24.         return b[0].localeCompare(a[0]);
  25.     });
  26.     arr = helper.map(item=>{
  27.         return item.join(' | ');
  28.     })
  29.     //arr.sort((a,b) =>a.localeCompare(b));
  30.  
  31.  
  32.     let systemObject = {};
  33.     let objArr = [];
  34.    
  35.     for (const line of arr) {
  36.         let [system, component, subcomponent] = line.split(' | ');
  37.         if(!systemObject.hasOwnProperty('system')){
  38.             systemObject.system = system;
  39.             systemObject.components = [];
  40.             let componentObject = new SimpleObject(component);
  41.             componentObject.addSubComponents(subcomponent);
  42.             systemObject.components.push(componentObject);
  43.            
  44.         }else{
  45.             if(systemObject.system === system){
  46.                 if(systemObject.components[systemObject.components.length-1].component === component){
  47.                     systemObject.components[systemObject.components.length-1].subcomponents.push(subcomponent);
  48.                 }else{
  49.                     let compObj = new SimpleObject(component);
  50.                     compObj.addSubComponents(subcomponent);
  51.                     systemObject.components.push(compObj);
  52.                 }
  53.             }else{
  54.                objArr.push(systemObject);
  55.                systemObject = new Object;
  56.                systemObject.system = system;
  57.                systemObject.components = [];
  58.                let smallObject = new SimpleObject(component);
  59.                smallObject.addSubComponents(subcomponent);
  60.                systemObject.components.push(smallObject);
  61.             }
  62.         }
  63.     }
  64.     objArr.push(systemObject);
  65.  
  66.  
  67.     objArr.sort((a,b)=>{
  68.         if(b.components.length === a.components.length){
  69.             return a.system.localeCompare(b.system);
  70.         }
  71.         return  b.components.length - a.components.length;
  72.     });
  73.  
  74.     for (const object of objArr) {
  75.             object.components.sort((a,b)=>{
  76.                
  77.                 return b.subcomponents.length - a.subcomponents.length;
  78.             })
  79.        
  80.  
  81.         console.log(`${object.system}`);
  82.         object.components.map(item=>{
  83.             console.log(`|||${item.component}`);
  84.             item.subcomponents.map(el=>{
  85.                 console.log(`||||||${el}`);
  86.             });
  87.         });
  88.     }
  89.    
  90.    
  91. }
Advertisement
Add Comment
Please, Sign In to add comment