Advertisement
kstoyanov

Followers js exam

Aug 14th, 2020
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function solve(args) {
  2.   let inputLine = args.shift();
  3.  
  4.   const records = {};
  5.  
  6.   while (inputLine !== 'Log out') {
  7.     let [command, username, count] = inputLine.split(': ');
  8.     count = Number(count);
  9.     switch (command) {
  10.       case 'New follower':
  11.         if (!Object.prototype.hasOwnProperty.call(records, username)) {
  12.           records[username] = { likes: 0, comments: 0 };
  13.         }
  14.         break;
  15.       case 'Like':
  16.         if (!Object.prototype.hasOwnProperty.call(records, username)) {
  17.           records[username] = { likes: count, comments: 0 };
  18.         } else {
  19.           records[username].likes += count;
  20.         }
  21.         break;
  22.       case 'Comment':
  23.         if (!Object.prototype.hasOwnProperty.call(records, username)) {
  24.           records[username] = { likes: 0, comments: 1 };
  25.         } else {
  26.           records[username].comments += 1;
  27.         }
  28.         break;
  29.       case 'Blocked':
  30.         if (Object.prototype.hasOwnProperty.call(records, username)) {
  31.           delete records[username];
  32.         } else {
  33.           console.log(`${username} doesn't exist.`);
  34.        }
  35.        break;
  36.  
  37.      default:
  38.        break;
  39.    }
  40.  
  41.    inputLine = args.shift();
  42.  }
  43.  
  44.  console.log(`${Object.keys(records).length} followers`);
  45.  
  46.  Object.entries(records)
  47.    .sort((a, b) => b[1].likes - a[1].likes || a[0].localeCompare(b[0]))
  48.    .forEach((element) => {
  49.      const [username, props] = element;
  50.      const { likes, comments } = props;
  51.  
  52.      const sum = likes + comments;
  53.      console.log(`${username}: ${sum}`);
  54.    });
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement