Reputation: 5165
How do we initialize and create new multi dimension array?
Let's imagine if I want to initialize a 4x4 multi dimension array and fill it with 0's
Ideally, in 2D arrays, we would do
let oned_array = new Array(10).fill(0);
// would create array of size 10 and fill it up with 0
How would I do something like [[0,0], [0,0]] (2x2 matrix)
let matrix = new Array([]).fill(0);
I'm trying to solve few algorithm problems and this requires me creating a new multi dimension array and going through them (Island problem etc)
Please advise.
EDIT:
Another solution I found:
Array(2).fill(0).map(_ => Array(2).fill(0));
Upvotes: 6
Views: 303
Reputation:
@NinaScholz' answer is much better—as always—but I finished writing this before seeing that answer so have decided to post anyway.
Similar idea but without the use of Array.from
. It creates a new array at the specified length, fills it with 0's so that it can be iterated, iterates it to replace 0's with a new array of the specified length filled with the specified value.
const buildMatrix = (l, h, v) => Array(l).fill(0).map(_ => Array(h).fill(v));
const matrix = buildMatrix(4,4,4);
matrix[0][0] = 0;
console.log(matrix);
.as-console-wrapper { max-height: 100% !important; }
Upvotes: 2
Reputation: 386868
To get an independent filled array, you could use Array.from
and map a new array with mapped values.
var array = Array.from({ length: 4 }, _ => Array.from({ length: 4 }, _ => 4));
array[0][0] = 0;
console.log(array);
.as-console-wrapper { max-height: 100% !important; top: 0; }
Upvotes: 3