I have an Array in a class, when I try to change values in JavaScript i get weird results. Here are some weird things from my console:
grid.grid
(10) [Array(8), Array(8), Array(8), Array(8), Array(8), Array(8), Array(8), Array(8), Array(8), Array(8)]
0: (8) [0, 0, 0, 0, 0, 0, 0, 0]
1: (8) [0, 0, 0, 0, 0, 0, 0, 0]
2: (8) [0, 0, 0, 0, 0, 0, 0, 0]
3: (8) [0, 0, 0, 0, 0, 0, 0, 0]
4: (8) [0, 0, 0, 0, 0, 0, 0, 0]
5: (8) [0, 0, 0, 0, 0, 0, 0, 0]
6: (8) [0, 0, 0, 0, 0, 0, 0, 0]
7: (8) [0, 0, 0, 0, 0, 0, 0, 0]
8: (8) [0, 0, 0, 0, 0, 0, 0, 0]
9: (8) [0, 0, 0, 0, 0, 0, 0, 0]
grid.grid[4][4] = 1;
grid.grid
(10) [Array(8), Array(8), Array(8), Array(8), Array(8), Array(8), Array(8), Array(8), Array(8), Array(8)]
0: (8) [0, 0, 0, 0, 1, 0, 0, 0]
1: (8) [0, 0, 0, 0, 1, 0, 0, 0]
2: (8) [0, 0, 0, 0, 1, 0, 0, 0]
3: (8) [0, 0, 0, 0, 1, 0, 0, 0]
4: (8) [0, 0, 0, 0, 1, 0, 0, 0]
5: (8) [0, 0, 0, 0, 1, 0, 0, 0]
6: (8) [0, 0, 0, 0, 1, 0, 0, 0]
7: (8) [0, 0, 0, 0, 1, 0, 0, 0]
8: (8) [0, 0, 0, 0, 1, 0, 0, 0]
9: (8) [0, 0, 0, 0, 1, 0, 0, 0]
Why is this happening and how can I prevent it?
This is how I created the Array:
createGrid() {
let grid = [];
let subgrid = [];
for(let i=0; i<this.cols; i++) {
subgrid.push(0);
}
for(let i=0; i<this.rows; i++) {
grid.push(subgrid);
}
return grid;
}