Advertisement
RRusev77

WtfExercise

Jul 13th, 2020
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function solve(inputArr) {
  2.     const users = new Map();
  3.     const articles = new Map();
  4.  
  5.     for(let line of inputArr) {
  6.  
  7.         if(line.includes('user ')) {
  8.             let userName = line.split('').splice(5, line.length).join('');
  9.             users.set(userName, {});        
  10.  
  11.         } else if(line.includes('article ')) {
  12.             let articleName = line.split('').splice(8, line.length).join('');
  13.             articles.set(articleName, []);
  14.  
  15.         } else if(line.includes(' posts on ')) {
  16.             let [postStr, commentStr] = line.split(': ');
  17.             let [userName, articleName] = postStr.split(' posts on ');
  18.             let [commentTitle, commentContent] = commentStr.split(', ');
  19.  
  20.             if(users.has(userName) && articles.has(articleName)) {
  21.                 users.get(userName)[articleName] = [commentTitle, commentContent];
  22.             }
  23.         }
  24.     }
  25.  
  26.     let articleEntries = Array.from(articles.entries());
  27.     articleEntries.forEach(articleEntrie => { // articleEntrie - [0] - name of the article
  28.     let userEntries = Array.from(users.entries());
  29.  
  30.         userEntries.forEach(userEntrie => {
  31.             if (userEntrie[1][articleEntrie[0]] != undefined) {
  32.                 let [commentTitle, commentContent] = userEntrie[1][articleEntrie[0]];
  33.                 let userName = userEntrie[0];
  34.                
  35.                 let commentObject = {
  36.                     name: userName,
  37.                     title: commentTitle,
  38.                     content: commentContent
  39.                 };
  40.  
  41.                 if(articles.get(articleEntrie[0]).length <= 1) {
  42.                     articles.get(articleEntrie[0]).push(commentObject);
  43.                 } else {
  44.                     console.log(articles.get(articleEntrie[0]));
  45.                 }
  46.  
  47.             }
  48.         });
  49.     });
  50.    
  51.  
  52.     articleEntries = Array.from(articles.entries()).sort((a, b) => {
  53.         let commentsA = a[1].length;
  54.         let commentsB = b[1].length;
  55.  
  56.         if(commentsA != commentsB) {
  57.             return commentsB - commentsA;
  58.         } else {
  59.             return a[0].localeCompare(a[1]);
  60.         }
  61.     });
  62.  
  63.     articleEntries.forEach(entrie => {
  64.         console.log(`Comments on ${entrie[0]}`);
  65.  
  66.         let sortedUsers = entrie[1].sort((a, b) => {
  67.             let nameA = a.name;
  68.             let nameB = b.name;
  69.  
  70.             return nameA.localeCompare(nameB);
  71.         });
  72.  
  73.         sortedUsers.forEach(user => {
  74.             let {name, title, content} = user;
  75.             console.log(`--- From user ${name}: ${title} - ${content}`);
  76.         });
  77.     });
  78.    
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement