Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Company {
- constructor(departments) {
- this.departments = {}
- }
- addEmployee(name, salary, position, department) {
- if (!(name && salary && position && department) || salary < 0) throw new Error('Invalid input!')
- if (!this.departments[department]) {
- this.departments[department] = []
- }
- this.departments[department].push({ salary, name, position })
- return `New employee is hired. Name: ${name}. Position: ${position}`;
- }
- bestDepartment() {
- let bestDepartment = "";
- let avgSalary = 0;
- for (let [department, employee] of Object.entries(this.departments)) {
- let currentAvgSalary = employee.reduce((acc, x) => acc + x.salary, 0)
- currentAvgSalary/=employee.length
- if (currentAvgSalary > avgSalary) {
- bestDepartment = department
- avgSalary = currentAvgSalary;
- }
- }
- let sortedDepartments = this.departments[bestDepartment]
- .sort((a,b)=>b.salary - a.salary || a.name.localeCompare(b.name))
- .map (x=>`${x.name} ${x.salary} ${x.position}`).join('\n')
- return `Best Department is: ${bestDepartment}\nAverage salary: ${avgSalary.toFixed(2)}\n${sortedDepartments}`
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement