Advertisement
Pijomir

Hells Kitchen

Jan 25th, 2024 (edited)
698
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.    let inputRef = document.querySelector("textarea");
  4.    let restaurantOutput = document.querySelector("#bestRestaurant p");
  5.    let workersOuput = document.querySelector("#workers p");
  6.  
  7.    function onClick() {
  8.       let input = JSON.parse(inputRef.value);
  9.       let result = {};
  10.       for (let el of input) {
  11.          let [restaurantName, workersData] = el.split(' - ');
  12.          if (!result.hasOwnProperty(restaurantName)) {
  13.             result[restaurantName] = {
  14.                avgSallary: 0,
  15.                allSallaries: [],
  16.                allWorkers: []
  17.             };
  18.          }
  19.  
  20.          let workersDataArr = workersData.split(', ');
  21.          for (let worker of workersDataArr) {
  22.             let [workerName, sallary] = worker.split(' ');
  23.             sallary = Number(sallary);
  24.             result[restaurantName].allSallaries.push(sallary);
  25.             result[restaurantName].allWorkers.push({ workerName, sallary });
  26.          }
  27.       }
  28.  
  29.       for (let restData of Object.values(result)) {
  30.          restData.avgSallary = Number((restData.allSallaries.reduce((a, b) => a + b, 0) / restData.allSallaries.length));
  31.       }
  32.  
  33.       let sortedResult = Object.entries(result).sort((a, b) => b[1].avgSallary - a[1].avgSallary);
  34.       let bestRestaurant = sortedResult[0];
  35.       restaurantOutput.textContent = `Name: ${bestRestaurant[0]} Average Salary: ${bestRestaurant[1].avgSallary.toFixed(2)} Best Salary: ${(Math.max(...bestRestaurant[1].allSallaries).toFixed(2))}`;
  36.       let bestRestaurantWorkers = bestRestaurant[1].allWorkers.sort((a, b) => b.sallary - a.sallary).map(a => `Name: ${a.workerName} With Salary: ${a.sallary}`).join(' ');
  37.       workersOuput.textContent = bestRestaurantWorkers;
  38.    }
  39. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement