• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

229
Views
Una función que devuelve a los empleados con el mayor número de empleados en el departamento en JavaScript

Soy principiante en programación y resolución de ejercicios de construcción lógica.

Tengo una variedad de empleados. Me gusta este (la matriz real tiene más datos, esto es solo un ejemplo):

 let arr = [ { name: 'Tom', department: { name: 'admin', }, }, { name: 'Chris', department: { name: 'account', }, }, ];

Ahora quiero devolver Empleados con el conteo más alto en el Departamento

He contado el número de empleados por departamento.

 const counts = {}; employees.forEach( (employee)=>{ counts[employee.department.name] = (counts[employee.department.name] || 0) + 1; }); console.log(counts) // { Accounts: 1, admin: 1 }

Pero quiero devolver los empleados con el mayor número de departamentos y, en lugar de la cantidad de empleados, quiero devolver cada objeto de empleado.

Este es el resultado esperado:

 { name: 'Employee1' { department:'Admin' } }, { name: 'Employee2' { department:'Admin' } }, { name: 'Employee3' { department:'Admin' } }

Solo necesito una guía sobre qué hacer a continuación.

Gracias

about 3 years ago · Juan Pablo Isaza
2 answers
Answer question

0

En lugar de número, almaceno empleados por su departamento en un objeto (hashmap). Luego, para extraer el más grande, he creado una función que devuelve un objeto que tiene el departamento y la lista de empleados.

Siéntase libre de ejecutar el código a continuación y ver los resultados.

 let employees = [ { name: "Tom", department: { name: "admin" } }, { name: "Chris", department: { name: "account" } } ]; const counts = {}; employees.forEach((employee) => { counts[employee.department.name] = ( counts[employee.department.name] || [] ).concat(employee.name); }); console.log(counts); // {admin: ['Tom'], account: ['Chris']} function getLargest(map) { let max = 0; let biggestDepartment = null; Object.entries(map).forEach(([department, arr]) => { if (max < arr.length) { max = arr.length; biggestDepartment = department; } }); return { name: biggestDepartment, employees: map[biggestDepartment] } } console.log(getLargest(counts))
about 3 years ago · Juan Pablo Isaza Report

0

Entonces, mi solución es que primero agrupe los empleados por departamento y luego puede obtener el departamento con el mayor número de empleados usando la propiedad .length .

 const getGroupDepartments = (employees) => { const groupedDepartments = {}; employees?.forEach((employee) => { groupedDepartments[employee.department.name] = groupedDepartments[employee.department.name] ? [...groupedDepartments[employee.department.name], employee] : [employee] }); return groupedDepartments } const getLargestDepartment = (employees) => { const departments = getGroupDepartments(employees) let largestDepartment; for (const department in departments) { if(largestDepartment?.length < departments[department].length || !largestDepartment){ largestDepartment = departments[department] } } return largestDepartment }
about 3 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error