Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function solve(inputArr) {
- const users = new Map();
- const articles = new Map();
- for(let line of inputArr) {
- if(line.includes('user ')) {
- let userName = line.split('').splice(5, line.length).join('');
- users.set(userName, {});
- } else if(line.includes('article ')) {
- let articleName = line.split('').splice(8, line.length).join('');
- articles.set(articleName, []);
- } else if(line.includes(' posts on ')) {
- let [postStr, commentStr] = line.split(': ');
- let [userName, articleName] = postStr.split(' posts on ');
- let [commentTitle, commentContent] = commentStr.split(', ');
- if(users.has(userName) && articles.has(articleName)) {
- users.get(userName)[articleName] = [commentTitle, commentContent];
- }
- }
- }
- let articleEntries = Array.from(articles.entries());
- articleEntries.forEach(articleEntrie => { // articleEntrie - [0] - name of the article
- let userEntries = Array.from(users.entries());
- userEntries.forEach(userEntrie => {
- if (userEntrie[1][articleEntrie[0]] != undefined) {
- let [commentTitle, commentContent] = userEntrie[1][articleEntrie[0]];
- let userName = userEntrie[0];
- let commentObject = {
- name: userName,
- title: commentTitle,
- content: commentContent
- };
- if(articles.get(articleEntrie[0]).length <= 1) {
- articles.get(articleEntrie[0]).push(commentObject);
- } else {
- console.log(articles.get(articleEntrie[0]));
- }
- }
- });
- });
- articleEntries = Array.from(articles.entries()).sort((a, b) => {
- let commentsA = a[1].length;
- let commentsB = b[1].length;
- if(commentsA != commentsB) {
- return commentsB - commentsA;
- } else {
- return a[0].localeCompare(a[1]);
- }
- });
- articleEntries.forEach(entrie => {
- console.log(`Comments on ${entrie[0]}`);
- let sortedUsers = entrie[1].sort((a, b) => {
- let nameA = a.name;
- let nameB = b.name;
- return nameA.localeCompare(nameB);
- });
- sortedUsers.forEach(user => {
- let {name, title, content} = user;
- console.log(`--- From user ${name}: ${title} - ${content}`);
- });
- });
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement