Estoy haciendo algunos ejercicios de Javascript Matrix y encontré el problema de que mi Matrix no se actualiza como se esperaba cuando se crea usando el constructor de Javascript Array.
Creé una matriz llamada teatro:
const theatre = new Array(5).fill(new Array(10).fill(0));que se imprime como se esperaba:
console.log(theatre) [ [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] ]sin embargo, cuando intento cambiar los valores de cada elemento en las dos primeras filas a 1, todos los valores de la matriz cambian.
for(let i = 0; i < 2; i++){ for(let j = 0; j < 10; j++){ theatre[i][j] = 1; } } console.log(theatre) [ [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ] ]Para probar más, actualicé el teatro para que fuera igual a una matriz en lugar de usar el constructor de matrices y ejecuté el ciclo for nuevamente, lo que devolvió el resultado esperado.
const theatre = [ [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] ] for(let i = 0; i < 2; i++){ for(let j = 0; j < 10; j++){ theatre[i][j] = 1; } } console.log(theatre) [ [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] ]¿Por qué esta lógica no funciona como se esperaba en la matriz creada con el constructor Array? ¿Estoy malinterpretando cómo funciona el constructor de matrices con el relleno?