He estado tratando de generar una matriz bidimensional de objetos. Cada objeto contiene su propia posición interna en la matriz en dos variables llamadas X e Y. Cuando instancia el objeto, puedo ver a través del registro de la consola que se está instanciando con los valores correctos de X e Y, esto también se puede validar a través del hecho esa posición en la matriz corresponde perfectamente a esos valores.
Sin embargo, cuando registro la matriz final después de iterar y guardar cada posición en la matriz dos como instancia del objeto, tienen coordenadas X idénticas, pero las coordenadas Y son perfectas.
let coordinates = Array(30).fill(Array(40)) // just creates an empty two dimensional array. class Tile { constructor(x,y){ this.x = x; this.y = y; } } for (let x = 0; x < coordinates.length; x++) { for (let y = 0; y < coordinates[x].length; y++) { console.log({x,y}) // logs {x: 0, y: 0} -> {x: 29, y:39} coordinates[x][y] = new Tile(x,y) } } console.log(coordinates) // logs two dimensional array with {x: 29, y:0} -> {x: 29, y:39}Me estoy volviendo loco mentalmente tratando de averiguar por qué hace eso. He intentado investigar enlaces, alcance, objetos en lugar de clases y no puedo encontrar una forma de evitarlo. Creo que resolver esto dará como resultado la solución de varios de mis problemas, ya que me encontré con otras propiedades en la clase de mosaico real que se configuran aleatoriamente a pesar de no tocarlo en absoluto. Me refiero a la creación de un laberinto utilizando viajes profundos y recursividad, y hacer que cada mosaico contenga una propiedad llamada "Visitado" y configurarlo como verdadero una vez que se haya recorrido una vez.
Al hacer eso, me encuentro con que mi laberinto se detiene repentinamente cuando decide que cada mosaico a su alrededor ha sido "visitado", ya que todos son iguales a verdaderos, pero nunca los he tocado.
Cualquier cosa que tengan que explique con lo que me estoy encontrando sería útil, sin duda es algo realmente simple y estúpido.
Gracias de antemano.
for (let y = 0; x <coordenadas[ x ].longitud;y++) es tu problema. Su bucle definitivamente no puede funcionar si está comparando con X para sus bucles Y, nunca saldrá.