I've created a mutidimensional array like this:
let array = new Array(7).fill(Array(7).fill());
Then I tried to change array[0][0], like this:
array[0][0] = 1;
But somehow, this changes the first element of every inner array. This is the output I've got:
Array(7)
0: (7) [1, undefined, undefined, undefined, undefined, undefined, undefined]
1: (7) [1, undefined, undefined, undefined, undefined, undefined, undefined]
2: (7) [1, undefined, undefined, undefined, undefined, undefined, undefined]
3: (7) [1, undefined, undefined, undefined, undefined, undefined, undefined]
4: (7) [1, undefined, undefined, undefined, undefined, undefined, undefined]
5: (7) [1, undefined, undefined, undefined, undefined, undefined, undefined]
6: (7) [1, undefined, undefined, undefined, undefined, undefined, undefined]
I can't imagine what I did wrong. Any ideas?
const newArr = (a, b) => {
return Array.from({length: a}, (_, i) => {
return Array.from({length: b}, (_, j) => {
return [i, j]
})
})
}
console.log(newArr(4, 3));
You are using the same array reference when filling with the array. Instead use a .map() to fill instead.
const arr2D = Array(7).fill(0).map(()=> Array(7).fill(0));