Advertisement
Guest User

Associative Arrays - More Exercise - Problem 5 - SoftUni Students

a guest
Jan 18th, 2022
344
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function solve(arr) {
  2.     let listOfCourses = {};
  3.  
  4.     for (let element of arr) {
  5.         if (!element.includes(`[`)) {
  6.             let [courseName, capacity] = element.split(`: `);
  7.             if (!listOfCourses.hasOwnProperty(courseName)) {
  8.                 listOfCourses[courseName] = {
  9.                     capacity: Number(capacity),
  10.                     students: {},
  11.                 }
  12.             } else {
  13.                 listOfCourses[courseName].capacity += Number(capacity);
  14.             }
  15.         } else if (element.includes(`with email`)) {
  16.             element = element.split(`[`);
  17.             let userName = element.shift();
  18.             element = element[0].split(`]`);
  19.             let creditCount = Number(element.shift());
  20.             let temp = element[0].split(` `);
  21.             let email = temp[3];
  22.             let courseName = element[0].split(` joins `)[1];
  23.             if (listOfCourses.hasOwnProperty(courseName) && listOfCourses[courseName].capacity > 0) {
  24.                 listOfCourses[courseName].students[userName] = {
  25.                     creditCount: creditCount,
  26.                     email: email,
  27.                 }
  28.                 listOfCourses[courseName].capacity--;
  29.             }
  30.         }
  31.     }
  32.     let sortedByCapacity = Object.entries(listOfCourses)
  33.         .sort((a, b) => Object.keys(b[1].students).length - Object.keys(a[1].students).length);
  34.     for (let element of sortedByCapacity) {
  35.         console.log(`${element[0]}: ${element[1].capacity} places left`);
  36.         Object.entries(element[1].students)
  37.             .sort((a, b) => b[1].creditCount - a[1].creditCount)
  38.             .forEach(x => {
  39.                 console.log(`--- ${x[1].creditCount}: ${x[0]}, ${x[1].email}`)
  40.             });
  41.     }
  42. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement