milovan7

Hells Kitchen / SoftUni Advanced

Apr 6th, 2021 (edited)
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.04 KB | None | 0 0
  1. function solve() {
  2. document.querySelector('#btnSend').addEventListener('click', onClick);
  3.  
  4. function onClick() {
  5. let input = JSON.parse(document.querySelector('textarea').value);
  6. let bestRestaurantOutput = document.querySelector('#bestRestaurant p');
  7. let bestWorkersOutput = document.querySelector('#workers p');
  8.  
  9. let restaurant = [0, 0, 0, 0];
  10.  
  11. input.forEach(line => {
  12. line = line.match(/[^-,\s]+/g);
  13. let restaurantName = line.shift();
  14. let workers = line.filter(e => isNaN(e));
  15. let salaries = line.filter(e => !isNaN(e));
  16.  
  17. if (restaurant[0] === restaurantName) {
  18. restaurant[2].push(...workers);
  19. restaurant[3].push(...salaries);
  20. restaurant[1] = calcAverageSalary(restaurant[3]);
  21. } else {
  22. let averageSalary = calcAverageSalary(salaries);
  23. if (averageSalary > restaurant[1]) {
  24. restaurant[0] = restaurantName;
  25. restaurant[1] = averageSalary;
  26. restaurant[2] = workers;
  27. restaurant[3] = salaries;
  28. }
  29. }
  30. });
  31.  
  32. function calcAverageSalary(salaries) {
  33. return salaries.reduce((a, b) => Number(a) + Number(b)) / salaries.length;
  34. }
  35. function calcHighestSalary() {
  36. return Math.max.apply(null, restaurant[3]);
  37. }
  38. function sortSalaries() {
  39. let workersAndSalaries = {};
  40. restaurant[2].forEach((e, i) => {
  41. workersAndSalaries[e] = restaurant[3][i];
  42. });
  43. let sorted = Object.entries(workersAndSalaries).sort((a, b) => b[1] - a[1]);
  44. print(sorted);
  45. }
  46. sortSalaries();
  47.  
  48. function print(sorted) {
  49. bestRestaurantOutput.textContent =
  50. `Name: ${restaurant[0]} Average Salary: ${(restaurant[1]).toFixed(2)} Best Salary: ${(calcHighestSalary()).toFixed(2)}`
  51. sorted.forEach(([name, salary]) => bestWorkersOutput.textContent += `Name: ${name} With Salary: ${salary} `);
  52. }
  53. }
  54. }
  55.  
Add Comment
Please, Sign In to add comment