Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Company {
- constructor() {
- this.departments = new Map();
- }
- addEmployee(username, salary, position, department) {
- if (!username || !salary || salary < 0 || !position || !department) {
- throw new Error("Invalid input!");
- }
- let newEmployee = { username, salary, position, department };
- if (this.departments.has(department)) {
- this.departments.get(department).push(newEmployee);
- } else {
- this.departments.set(department, [newEmployee]);
- }
- return `New employee is hired. Name: ${username}. Position: ${position}`;
- }
- bestDepartment() {
- let totalSalary = (department) => {
- let totalSalary = department[1].reduce((acc, b) => { return acc += b.salary }, 0);
- let averageSalary = (totalSalary / department[1].length).toFixed(2);
- department.push(averageSalary);
- return averageSalary;
- };
- let bestDepartment = [...this.departments].sort((a, b) => totalSalary(b) - totalSalary(a))[0];
- let sortBySalaryAndName = bestDepartment[1].sort((a, b) => b.salary - a.salary || a.username.localeCompare(b.username));
- let result = `Best Department is: ${bestDepartment.shift()}\n`;
- result += `Average salary: ${bestDepartment.pop()}\n`;
- sortBySalaryAndName.forEach(e => result += `${e.username} ${e.salary} ${e.position}\n`);
- return result.trim();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement