Nested for loop debugging section

Tell us what’s happening:
The problem for this exercise is instead of [[0,0],[0,0],[0,0]], myArray turns out to be
[ [ 0, 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0, 0 ] ]

I don’t understand why myArray is [ [ 0, 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0, 0 ] ]

in my reasoning, since row is updated every time, newArray should be [[0,0], [0,0,0,0], [0,0,0,0,0,0]

*Just to be clear, I’m not asking about the explanation of the solution.
Plese help. Thanks!

Your code so far


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/87.0.4280.66 Safari/537.36.

Challenge: Use Caution When Reinitializing Variables Inside a Loop

Link to the challenge:

I’ve answered this one a number of times, take a look at Use Caution When Reinitializing Variables Inside a Loop Question for the breakdown of what’s really going on.

1 Like

Thank you a lot for your detailed explanation! Also, your mentioning of pass by reference and global variable help me understand ! So relieved to get it now. Thanks again!