# 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

`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 ] ]

This is the exact same `row` every singe time.