georgiev955

07. Hells Kitchen

Aug 6th, 2023
110
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 inputArrayElement = document.getElementsByTagName('textarea')[0];
  6.       let inputArray = JSON.parse(inputArrayElement.value);
  7.       let dataObj = {};
  8.      
  9.       for (const restaurant of inputArray) {
  10.          let [restaurantName, workers] = restaurant.split(' - ');
  11.          let workersArr = workers.split(', ');
  12.          if (!dataObj.hasOwnProperty(restaurantName)) {
  13.             dataObj[restaurantName] = {};
  14.          }
  15.          for (const worker of workersArr) {
  16.             let [name, salary] = worker.split(' ');
  17.             salary = Number(salary);
  18.             dataObj[restaurantName][name] = salary;
  19.          }
  20.       }
  21.  
  22.       for (const key in dataObj) {
  23.          let employeesCount = Object.entries(dataObj[key]).length;
  24.          let totalSalary = Object.values(dataObj[key]).reduce((a, b) => a + b);
  25.          let averageSalary = parseFloat((totalSalary / employeesCount).toFixed(2));
  26.          let topWorker = Object.entries(dataObj[key]).sort((a, b) => b[1] - a[1])[0][0];
  27.          
  28.          dataObj[key].averageSalary = averageSalary;
  29.          dataObj[key].topWorker = {
  30.             name: topWorker,
  31.             salary: dataObj[key][topWorker],
  32.          }
  33.       }
  34.      
  35.       let sortedBest = Object.entries(dataObj).sort((a, b) => b[1].averageSalary - a[1].averageSalary);
  36.       console.log(sortedBest);
  37.       let bestRestaurant = sortedBest[0][0];
  38.       let averageSalary = sortedBest[0][1].averageSalary;
  39.       let bestWorkerSalary = sortedBest[0][1].topWorker.salary;
  40.       let bestRestaurantElement = document.querySelector('#bestRestaurant p');
  41.       bestRestaurantElement.textContent += `Name: ${bestRestaurant} Average Salary: ${averageSalary.toFixed(2)} Best Salary: ${bestWorkerSalary.toFixed(2)}`
  42.       let bestWorkersElement = document.querySelector('#workers p');
  43.       let result = '';
  44.       let sortedBestWorkers = Object.entries(sortedBest[0][1]).sort((a,b) => b[1] - a[1]);
  45.       for (const worker of sortedBestWorkers) {
  46.          if (worker[0] !== 'averageSalary' && worker[0] !== 'topWorker') {
  47.             result += `Name: ${worker[0]} With Salary: ${worker[1]} `;
  48.          }
  49.       }
  50.    
  51.       bestWorkersElement.textContent = result;
  52.    }
  53.  
  54. }
Advertisement
Add Comment
Please, Sign In to add comment