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

214
Vistas
Evitar bucles anidados en un algoritmo JavaScript de TicTacToe

Escribí un algoritmo rápido que detecta una victoria en un juego de TicTacToe.

función game() recorre un tablero simulado de tres en ticTacToe , encuentra todos los índices de un valor dado, luego recorre todos los combos ganadores posibles, encuentra cualquier índice donde el valor real es igual al índice del primer ciclo, (lo sé: /) luego reemplaza el valor con el valor pasado a la función (ya sea x o o).

Luego, se ejecuta una función posterior que verifica si todos los valores dentro de cualquiera de las matrices anidadas dentro de los possibleWinCombos son todos iguales entre sí. Si es verdadero, se encuentra un ganador.

 const possibleWinCombos = [ [0, 1, 2], //================ // [3, 4, 5], //== Horizontal == // [6, 7, 8], //=================// [0, 3, 6], //================ // [1, 4, 7], //== Vertical == // [2, 5, 8], //=================// [0, 4, 8], //=================// [2, 4, 6], //== Diagonal == // ] const ticTacToe = [ 'x', 'o', null, null, 'x', null, 'o', null, 'x', ] const game = (value) => { ticTacToe.forEach((cell, idxOfCell) => { if(cell === value){ for (winCombo of possibleWinCombos){ let idxToReplace = winCombo.indexOf(idxOfCell) winCombo.splice(idxToReplace, 1, value) } } }) checkForWinner(value) ? console.log(`${value}'s win`) : console.log('game still going') } const checkForWinner = (value) => { return possibleWinCombos.some((winCombo) => { return winCombo.every((winComboValue) => winComboValue === value); }) } game('x') // x's win game('o') // game still going

Son solo dos funciones, por lo que no es muy pesado en código, pero creo que game() no obtendría una puntuación muy alta en las clasificaciones de rendimiento debido al bucle anidado. Cualquier recomendación sobre algunas mejoras sería genial.

https://replit.com/@uwitdat/DrabNoteworthyLogin#script.js

about 4 years ago · Juan Pablo Isaza
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