Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

91
Views
Restablecer una matriz y hacer que sea mutable nuevamente

Estoy haciendo tic-tac-toe desde TOP, no estoy buscando a alguien que haga mi tarea, solo creo que estoy malinterpretando gravemente las matrices o el alcance. Tengo un módulo "Juego" donde guardo la información del juego.

 const Game = (()=>{ //Beginning state of the board, what I want to reset after every win/draw let board = [null, null, null, null, null, null, null, null, null]; const add = (value, index) =>{ board[index] = value; } const reset = () => { board = [null, null, null, null, null, null, null, null, null] } return {board, add, reset} })();

Todo se controla desde un módulo controlador, que configura a los jugadores, juega la ronda, cambia el turno, etc. Para la primera ronda después de actualizar funciona perfectamente, el problema surge cuando necesito borrar todo para la próxima ronda.

El Game.reset() actual es solo una de las formas en que intenté hacerlo, traté de hacer referencia a él con un argumento de función, que llamaría más adelante, pensé en llamarlo directamente en el módulo Game, usando métodos de matriz , Probé con seguridad 10 formas en las que pude pensar y ninguna funcionó, algunas restablecieron la matriz a todos los valores nulos, otras no, pero en cada una no puedo volver a jugar la ronda.

Si se restablece con éxito, simplemente permanece vacío, independientemente de si presiono otro campo o no, supongo que tiene que ver con el hecho de que defino la matriz al comienzo del módulo, pero no estoy seguro. Básicamente, mi pregunta es cómo poder "llamar" al módulo del juego cada vez desde el principio si quiero reiniciar el juego, o por qué se bloquea así.

Aquí está mi repositorio https://github.com/krisboz/tic-tac-toe Sé que es un completo caos porque en index2.js casi lo hice funcionar, luego decidí refactorizarlo para index3.js y ahora estoy atascado nuevamente en el mismo problema, aunque se ve un poco más limpio tal vez jaja.

about 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Las referencias no son dueñas de sus datos.

Su declaración de devolución crea una nueva referencia a la misma matriz, pero aunque inicialmente ambas variables de la placa apuntan a la misma dirección de memoria, cambiar la que muestra una matriz diferente (que existirá en una dirección de memoria separada, no sobrescribirá la original ), no afectará a la otra variable, porque todavía apunta a la misma dirección que antes.

Lo que le gustaría hacer aquí es cambiar el tablero del objeto actual con this palabra clave.

Naturalmente, intentarías algo como

 const reset = () => { this.board = [null, null, null, null, null, null, null, null, null] }

pero eso lo llevará a una madriguera de confusión diferente, que es la diferencia entre los ámbitos de función y función de flecha.

el uso de la palabra clave this en la función de flecha se referiría a la ventana global, porque está vinculada en la creación de la función.

En su lugar, podrías usar

 function reset() { this.board = [null, null, null, null, null, null, null, null, null] }

donde this se evalúa en el momento en que se llama (a menos que vincule la función manualmente).

Es de esperar que todo este problema desaparezca una vez que comience a escribir clases para sus objetos.

about 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!