Soy nuevo en javascript y he estado haciendo algunos ejercicios, pero no puedo entender por qué este código funciona así,
let newArray = []; let arr1 = []; for (let i = 0; i < 2; i++) { for (let j = 0; j < 2; j++) { arr1.push(0); //console.log('Arr1:',arr1); } newArray.push(arr1); //console.log('New Array:', newArray) } console.log(newArray);Según yo, este bloque de código debería generar [[0,0][0,0,0,0]] pero el resultado real es [[0,0,0,0][0,0,0,0] ].
Intenté iniciar sesión en la consola después de cada iteración (eliminando los comentarios) y parece que no puedo encontrar dónde sale mal. Parece que todo va bien hasta el último registro. Agradecería tu ayuda.
Debe utilizar la sintaxis Array#slice o spread para copiar la matriz en lugar de presionar la misma referencia varias veces, ya que los cambios posteriores seguirán reflejándose.
let newArray = []; let arr1 = []; for (let i = 0; i < 2; i++) { for (let j = 0; j < 2; j++) { arr1.push(0); } newArray.push(arr1.slice()); } console.log(JSON.stringify(newArray));