Advertisement
Todorov_Stanimir

03. Comments Associative Arrays - More Exercises

Sep 6th, 2019
169
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. comment = (input) => {
  2.     let listUsers = [];
  3.     let listArticles = {};
  4.     input.forEach(line => {
  5.         if (line.startsWith('user ')) {
  6.             let userName = line.split('user ').filter(el => el !== '')[0];
  7.             listUsers.push(userName);
  8.         } else if (line.startsWith('article ')) {
  9.             let articleName = line.split('article ').filter(el => el !== '');
  10.             listArticles[articleName] = [];
  11.         } else {
  12.             let [userName, tokens] = line.split(' posts on ');
  13.             let [articleName, tokens1] = tokens.split(': ');
  14.             let [commentTitle, commentContence] = tokens1.split(', ');
  15.             if (listUsers.includes(userName) && listArticles.hasOwnProperty(articleName)) {
  16.                 listArticles[articleName].push({ [userName]: [commentTitle, commentContence] })
  17.             }
  18.         }
  19.     });
  20.     Object.entries(listArticles)
  21.         .sort((a, b) => b[1].length - a[1].length)
  22.         .forEach(element => {
  23.             console.log(`Comments on ${element[0]}`);
  24.             element[1]
  25.                 .sort((a, b) => Object.keys(a)[0].localeCompare(Object.keys(b)[0]))
  26.                 .forEach(line => {
  27.                     console.log(`--- From user ${Object.keys(line)[0]}: ${Object.values(line)[0][0]} - ${Object.values(line)[0][1]}`);
  28.                 });
  29.         });
  30. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement