Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Company {
- constructor() {
- this.departments = {};
- }
- addEmployee(name, salary, position, department) {
- if (!(name && salary && position && department) || salary < 0) {
- throw new Error('Invalid input!');
- }
- if (!this.departments.hasOwnProperty(department)) {
- this.departments[department] = [];
- }
- this.departments[department].push({ name, salary, position });
- return `New employee is hired. Name: ${name}. Position: ${position}`;
- }
- bestDepartment() {
- let bestDepartment = '';
- let avgSalary = 0;
- for (let [department, employees] of Object.entries(this.departments)) {
- let depAvgSalary = employees.reduce((acc, e) => acc + Number(e.salary), 0);
- depAvgSalary /= employees.length;
- if (depAvgSalary > avgSalary) {
- bestDepartment = department;
- avgSalary = depAvgSalary;
- }
- }
- const sortedBySalaries = 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${sortedBySalaries}`;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement