georgiev955

07. Hell's Kitchen

Sep 25th, 2023
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.30 KB | None | 0 0
  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. }
Add Comment
Please, Sign In to add comment