Advertisement
bebo231312312321

Untitled

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