Last active
March 16, 2022 23:00
-
-
Save buskerone/d51a1008f4782391f7dedd7b3be9055e to your computer and use it in GitHub Desktop.
get two most important clients
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Dentro del dashboard hay una seccion donde se listan los 2 clientes mas importantes, osea que tienen mayor cantidad de proyectos asignados. | |
// El array que vas a recibir es el siguiente =>['Client1', 'Client2','Client2','Client3','Client2','Client3']; | |
// , siendo la posicion el Proyecto y el valor, el cliente asignado. La function deberia retornar un array con los 2 clientes con mayor cantidad de proyectos asignados. | |
const clients = ['Client1','Client2','Client2','Client3','Client2','Client3']; | |
// Respuesta original | |
const getMostImportantClients = () => { | |
const obj = {} | |
const repeated = [] | |
clients.forEach(c => { | |
// si existe sumo 1 | |
if (obj[c]) obj[c] += 1 | |
else obj[c] = 1 | |
}) | |
// otra forma más corta | |
// clients.forEach(c => obj[c] = (obj[c] || 0) + 1) | |
// {"Client1": 1, "Client2": 3, "Client3": 2} | |
Object.entries(obj).forEach(c => { | |
// se asigna el valor actual al repeated[0] en dos casos: la primera es que repeated[0] no esté definido, | |
// y la segunda, es cuando el elemento actual es mayor que el ya definido. | |
if (!repeated[0] || c[1] > obj[repeated[0]]) repeated[0] = c[0] | |
// Si no se cumple la condición anterior, quiere decir que el elemento actual es menor que el almacenado en repeated, | |
// en este caso, lo asignamos a repeated[1] que es el segundo mayor (solo si se cumplen algunas de las dos condiciones siguientes: | |
// repeated[1] no esté definido o que el elemento actual sea mayor que el repeated actual) | |
else if (!repeated[1] || c[1] > obj[repeated[1]]) repeated[1] = c[0] | |
}) | |
return repeated | |
} | |
// Respuesta mejorada | |
const getMostImportantClients = () => { | |
const obj = {} | |
clients.forEach(c => obj[c] = (obj[c] || 0) + 1) | |
return Object.entries(obj).sort((a, b) => b[1] - a[1]).map(c => c[0]).slice(0, 2) | |
} | |
console.log(getMostImportantClients()) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment