Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Company{
- constructor() {
- this.departments = {};
- }
- addEmployee(name, salary, position, department) {
- if ([...arguments].some(a => a === null || a === undefined || a === '') || salary < 0) {
- throw new Error('Invalid input!');
- }
- if (!this.departments.hasOwnProperty(department)) {
- this.departments[department] = [];
- }
- let person = [name, salary, position]
- this.departments[department].push(person);
- return `New employee is hired. Name: ${name}. Position: ${position}`;
- }
- bestDepartment() {
- let highestAvgSalary = 0;
- let bestDep = '';
- for (const department in this.departments) {
- let totalWorkers = this.departments[department].length;
- let totalSalaries = 0;
- this.departments[department].forEach(worker => {
- let salary = worker[1];
- totalSalaries += salary;
- })
- let currentAverage = totalSalaries / totalWorkers;
- if (currentAverage > highestAvgSalary) {
- highestAvgSalary = currentAverage;
- bestDep = department;
- }
- }
- let sortedBest = this.departments[bestDep].sort((a, b) => {
- if (a[1] === b[1]) {
- return a[0].localeCompare(b[0]);
- }
- return b[1] - a[1];
- })
- let result = '';
- result += `Best Department is: ${bestDep}`;
- result += `\nAverage salary: ${highestAvgSalary.toFixed(2)}`;
- sortedBest.forEach(worker => {
- result += `\n${worker[0]} ${worker[1]} ${worker[2]}`;
- })
- return result;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment