TechnoCorner
TechnoCorner

Reputation: 5165

Initializing and filling multi dimension array in javascript

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

Answers (2)

user4639281
user4639281

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

Nina Scholz
Nina Scholz

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

Related Questions