Tell us what’s happening:
I understand for the challenge I need to add row = in the first loop to reinitialize it. What I don’t get is why before fixing the matrix it is calculating to:
[ [ 0, 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0, 0 ] ]
If I’m understanding the code snippet and how push() works correctly, newArray.push(row) is being invoked 3 times, in the outer loop and each time row is being pushed into newArray. The first time it would push [0,0] then, [0,0,0,0], and last [0,0,0,0,0,0] so why isn’t the output:
[ [0,0], [0,0,0,0 ], [0,0,0,0,0,0]]
Thanks in advance!
function zeroArray(m, n) {
// Creates a 2-D array with m rows and n columns of zeroes
let newArray = [];
let row = [];
for (let i = 0; i < m; i++) {
// Adds the m-th row into newArray
for (let j = 0; j < n; j++) {
// Pushes n zeroes into the current row to create the columns
row.push(0);
}
// Pushes the current row, which now has n zeroes in it, to the array
newArray.push(row);
}
return newArray;
}
let matrix = zeroArray(3, 2);
console.log(matrix);
Your browser information:
User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36
.
Challenge: Use Caution When Reinitializing Variables Inside a Loop
Link to the challenge: