Advertisement
bebo231312312321

Untitled

Jun 5th, 2023
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. class Company {
  2.   constructor() {
  3.     this.departments = {};
  4.   }
  5.  
  6.   addEmployee(name, salary, position, department) {
  7.     if (!(name && salary && position && department) || salary < 0) {
  8.       throw new Error('Invalid input!');
  9.     }
  10.  
  11.     if (!this.departments.hasOwnProperty(department)) {
  12.       this.departments[department] = [];
  13.     }
  14.    
  15.     this.departments[department].push({ name, salary, position });
  16.     return `New employee is hired. Name: ${name}. Position: ${position}`;
  17.   }
  18.  
  19.   bestDepartment() {
  20.     let bestDepartment = '';
  21.     let avgSalary = 0;
  22.  
  23.     for (let [department, employees] of Object.entries(this.departments)) {
  24.       let depAvgSalary = employees.reduce((acc, e) => acc + Number(e.salary), 0);
  25.       depAvgSalary /= employees.length;
  26.      
  27.       if (depAvgSalary > avgSalary) {
  28.         bestDepartment = department;
  29.         avgSalary = depAvgSalary;
  30.       }
  31.     }
  32.  
  33.     const sortedBySalaries = this.departments[bestDepartment]
  34.       .sort((a, b) => b.salary - a.salary || a.name.localeCompare(b.name))
  35.       .map((x) => `${x.name} ${x.salary} ${x.position}`)
  36.       .join('\n')
  37.  
  38.     return `Best Department is: ${bestDepartment}\nAverage salary: ${avgSalary.toFixed(2)}\n${sortedBySalaries}`;
  39.   }
  40.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement