Why .push( ) here replaces previous items

Tell us what’s happening:

Can anyone tell me why the .push() function here replaces the previous row it pushes into the newArray please? As far as I know, .push() only adds the elemente(s) in the () at the end?

  **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);
  console.log(row);
   console.log(newArray);
}
return newArray;
}

let matrix = zeroArray(3, 2);


  **Your browser information:**

User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.80 Safari/537.36 Edg/98.0.1108.50

Challenge: Use Caution When Reinitializing Variables Inside a Loop

Link to the challenge:

push() isn’t replacing anything. The problem is that you only have one row array, so that one array keeps getting bigger and bigger.

1 Like

You’re just pushing it into the same row. There needs to be a row for every iteration of the outer loop, not just one.

1 Like

As far as i understand, the newArray here should be equal to the following after each time the .push adds another row at the end:
[ [ 0, 0 ] ]
[ [ 0, 0 ], [ 0, 0, 0, 0 ] ]
[ [ 0, 0 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 0 ] ]

I can vagouly see the logic of the out put but please helping me out what i am missing please.

This is the exact same row every singe time.

Still the same row. You never change which array you are using.

This topic was automatically closed 182 days after the last reply. New replies are no longer allowed.