Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

163
Vistas
¿Cómo puedo representar 2 jugadores de una lista, que tienen los mismos puntos, al mismo nivel, por ejemplo, ambos en segundo lugar?

En una tabla de clasificación, me encontré con el problema antes mencionado. Hago una lista donde clasifico a los jugadores según sus puntos. Luego los represento usando el index + 1 para obtener su posición en la lista. Pero en casos de igualdad, uno obtiene el segundo y el otro tercero, etc.

Primero pensé en tener un índice para cada jugador, pero eso sería una exageración, ya que cada vez que un jugador cambiaría sus puntos, tendría que cambiar los índices de otros jugadores también, para ajustar la lista actualizada.

Creo que necesito algo que verifique los puntos, y si son los mismos que el siguiente jugador, asigne el mismo índice. Luego, si el siguiente jugador tiene menos puntos, obtenga el índice, reste el número de jugadores que tuvieron los mismos puntos y dé el resultado como su índice.

¿Es esa una buena solución?

Si alguien quisiera ayudar, tengo aquí un ejemplo mínimo reproducible.

Gracias

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Aquí esta lo que hice. Tomé la lista ordenada, la repasé y verifiqué si el valor anterior era el mismo que el valor actual en la iteración. Si el valor es el mismo, no hay necesidad de aumentar la posición, pero si es diferente, agregue uno a la posición.

https://codesandbox.io/s/players-with-same-points-forked-lkhcu6

about 4 years ago · Juan Pablo Isaza Denunciar

0

Puedes count cuántas personas tienen más puntos que el jugador, y la posición para ese jugador es esa count + 1 . Necesitas un conteo extra para cada jugador, pero si la lista no es muy grande, esta puede ser una solución. Por ejemplo:

 let players = [ { name: "John", points: 4 }, { name: "Bill", points: 3 }, { name: "Mark", points: 4 }, { name: "Helen", points: 2 }, { name: "Mary", points: 10 } ]; const list = players.sort((a, b) => (a.points < b.points ? 1 : -1)); function countPlayersMithMorePoints(points){ return players.filter(player => player.points > points).length + 1; } players = players.map(player => { return { ...player, position: countPlayersMithMorePoints(player.points) } }) console.log(players)

Así que en este caso. "Mark" y "Jhon" tienen 4 puntos... por lo que ambos están en el segundo lugar. Y Helen está en el cuarto lugar. No hay un tercer lugar.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda