Saltar al contenido principal
Codigo Heroe
Tarea anterior
Objetos14/25
A la lista de tareas
  1. 1. Una función para lanzar los dados
  2. 2. Pasar los datos de los participantes
  3. 3. Sumar puntos con +=
  4. 4. Crear un objeto
  5. 5. Leer propiedades con la notación de punto
  6. 6. Un arreglo de objetos
  7. 7. Modificar las propiedades de un objeto
  8. 8. Referencias a objetos
  9. 9. Agrupar las reglas en un objeto
  10. 10. Un ciclo para los intentos
  11. 11. Una función para encontrar ganadores
  12. 12. Recorrer los objetos de un arreglo
  13. 13. Buscar la puntuación máxima
  14. 14. Agregar ganadores con push
  15. 15. Detectar un empate general
  16. 16. Construir el mensaje de los ganadores
  17. 17. Agregar participantes y cambiar las reglas
  18. 18. Ajustar el mensaje con condiciones
  19. 19. Devolver un objeto desde una función
  20. 20. Crear y llamar a un método
  21. 21. Leer propiedades desde un método
  22. 22. Un objeto como diccionario
  23. 23. Notación de corchetes
  24. 24. El contexto de la llamada y this
  25. 25. Crear otro objeto con la misma función
Siguiente tarea
  • Matriz de skills
  • Cursos
  • Registro
  • Iniciar sesión

Loading…
En unos segundos, estará listo.

  • Teoría
  • Teoría

Agregar ganadores con push

Ya sabemos encontrar a los ganadores. Ahora los guardaremos en winners. Al recorrer el arreglo de participantes pueden darse dos situaciones interesantes.

En la primera encontramos a alguien con más puntos que el campeón actual. Ya sabemos detectar ese caso; falta actualizar correctamente el arreglo de ganadores.

Como acabamos de encontrar una puntuación más alta, este participante debe quedar solo en el arreglo. Quitamos a los campeones anteriores y guardamos al nuevo candidato. Lo más sencillo es reemplazar todo el arreglo:

// Asignamos a winners un arreglo con un solo elemento: max
winners = [max];

En la segunda situación encontramos a alguien con los mismos puntos que el campeón actual. Todavía no hemos descrito ese caso. Podemos detectarlo así:

Si el participante actual tiene más puntos que el campeón,
  lo convertimos en el nuevo ganador.
Si no,
  si tiene los mismos puntos que el campeón,
    lo agregamos al arreglo de ganadores.

Es decir, podemos anidar una condición dentro de la rama alternativa de la primera comprobación.

Para agregar ganadores al arreglo usaremos push. Este método agrega los elementos que recibe al final del arreglo. Por ejemplo:

let purchases = ['leche', 'kéfir'];

purchases.push('salchicha', 'caramelos', 'gomitas');
console.log(purchases);
// Muestra: ["leche","kéfir","salchicha","caramelos","gomitas"]

¿Demasiada información? ¡Cuanto más practiques aquí, más fáciles serán los encargos del Jefe! O eso esperamos.

  • script.js
JavaScript
let gameRuleset = { diceNumber: 2, maxAttempts: 3 }; let firstCat = { name: 'Cupcake', points: 0 }; let secondCat = { name: 'Rodolfo', points: 0 }; let cats = [firstCat, secondCat]; let runGame = function (ruleset, players) { for (let currentAttempt = 1; currentAttempt <= ruleset.maxAttempts; currentAttempt++) { for (let i = 0; i < players.length; i++) { let throwResult = keks.throwDice(ruleset.diceNumber, ruleset.diceNumber * 6); players[i].points += throwResult; console.log(players[i].name + ' sacó ' + players[i].points); } } return players; }; let getWinners = function (players) { let winners = []; let max = players[0]; for (let i = 0; i < players.length; i++) { let currentPlayer = players[i]; if (currentPlayer.points > max.points) { max = currentPlayer; console.log('Nuevo récord: ' + currentPlayer.points); } } return winners; }; cats = runGame(gameRuleset, cats); console.log(cats); let tops = getWinners(cats); console.log(tops);
Consola

El código ha cambiado, haga clic en "Ejecutar" o active la ejecución automática.

Resultado de la ejecución

ObjetivosRealizado
0
    1. En la condición que detecta un nuevo campeón, después de max = currentPlayer, asigna a winners un arreglo con un solo elemento: max.
    2. Elimina la impresión del mensaje sobre el nuevo récord.
    3. Agrega una rama else a la condición.
    4. Dentro de else, escribe un if anidado que compruebe si el participante actual y el campeón tienen los mismos puntos. Usa la comparación estricta ===.
    5. Si se cumple esa condición, agrega al participante actual al arreglo de ganadores con push.
    Codigo Heroe

    © 2023-2026, codigoheroe.com