Advertisement
dilyana2001

Untitled

Sep 29th, 2021
204
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function solve() {
  2.     document.querySelector('#btnSend').addEventListener('click', onClick);
  3.  
  4.     function onClick() {
  5.         let input = JSON.parse(document.querySelector('#inputs textarea').value);
  6.         let bestRestaurantOutput = document.querySelector('#bestRestaurant p');
  7.         let workersOutput = document.querySelector('#workers p');
  8.  
  9.         let obj = {};
  10.  
  11.         input.forEach(line => {
  12.             let [restaurantName, workersData] = line.split(' - ');
  13.             let workerInput = workersData.split(', ').map(el => {
  14.                 let [name, salary] = el.split(' ');
  15.                 return { name, salary: Number(salary) };
  16.             })
  17.  
  18.             if (!obj[restaurantName]) {
  19.                 obj[restaurantName] = {
  20.                     workers: [],
  21.                     getAverageSalary: function() {
  22.                         return this.workers.reduce((a, b) => a + b.salary, 0) / this.workers.length;
  23.                     }
  24.                 };
  25.             }
  26.  
  27.             obj[restaurantName].workers = obj[restaurantName].workers.concat(workerInput);
  28.         })
  29.  
  30.         let bestAverageSalary = Object.entries(obj).sort((a, b) => b[1].getAverageSalary() - a[1].getAverageSalary());
  31.         let bestSalary = Object.values(bestAverageSalary[0][1].workers).sort((a, b) => b.salary - a.salary);
  32.  
  33.         bestRestaurantOutput.textContent = `Name: ${bestAverageSalary[0][0]} Average Salary: ${(bestAverageSalary[0][1].getAverageSalary().toFixed(2))} Best Salary: ${bestSalary[0].salary.toFixed(2)}`;
  34.         workersOutput.textContent = Object.values(bestSalary).map(el => `Name: ${el.name} With Salary: ${el.salary}`).join(' ');
  35.     }
  36. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement