DEV Community

loading...

How do you write an empty array?

Ryan Lynch (he/him)
I solve computer problems as a dev, human problems as a teacher
・1 min read

How do you write empty arrays when they have multiple dimensions? Answer in a comment or in the twitter poll below 👇
Liquid error: internal

Discussion (10)

Collapse
wh0am1 profile image
Carlos Aguilar

If the challenge/problem specified the cardinality of the sets each of the dimensions span, we could use a recursive function, something like:

type Space<T> = T | Array<Space<T>>

function initSpace<T>(identity: T, ...cardinalities: number[]): Space<T> {
  if (!cardinalities.length) return identity

  let cardinality = cardinalities[0]
  cardinalities = cardinalities.slice(1)

  return new Array(cardinality)
    .fill(null)
    .map(() => initSpace(identity, ...cardinalities))
}

Let's say you want that three-dimensional array to be Rubik's cube-like, filled with zeros:

let numbers: Space<number> = initSpace<number>(0, 3, 3, 3)

Otherwise, I'd simply go for the solution @wingkwong posted: [] 🤷‍♂️

Collapse
mbougarne profile image
Mourad Bougarne • Edited

The samplist way is :

let myArr = [[],[],[]]

With spread operator:

let arr1 = [[],[]]
let arr2 = [[],...arr1]

We can use it with new Array(3) fill() and map()

Collapse
lukaszahradnik profile image
Lukáš Zahradník

It's not an empty array. It' array of empty arrays.

Collapse
mbougarne profile image
Mourad Bougarne

Did I get the challenge wrong? It Isn't about creating empty multidimensional array?

Thread Thread
shiftyp profile image
Ryan Lynch (he/him) Author

It's an interesting challenge. Your answer isn't wrong per-se, as how you represent the empty array depends on the code that processes the value. I think your answer however may show a mix-up between the dimension of an array vs. the length of an array. A multidimensional array is nested according to the number of dimensions. So a two dimensional array with two rows and two columns might look like:

[[1,2],[3,4]]

The number of row and columns are the lengths of the arrays in each dimension. A three dimensional array with one element might look like

[[[1]]]

So when I see an array [[],[],[]] I see a two dimensional array, with a length of three in the first dimension. Make sense?

Thread Thread
mbougarne profile image
Mourad Bougarne

Thank you Ryan!!! You teach me something new. i think here in this example: [[],[],[]] it's a 3d array?!

Thread Thread
shiftyp profile image
Ryan Lynch (he/him) Author • Edited

You can tell how many dimensions an array has by how many individual indices you need to access the values. let's add some values to the above array and access one:

const arr = [[1],[2],[3]]

const value = arr[0][0] // value is 1

Notice that we need two indices to access the values. An array of three dimensions would be nested such that you need three indices. For example:

const arr = [[[1],[2]],[[3],[4]],[[5],[6]]]

const value = arr[0][0][0] // value is 1
Thread Thread
mbougarne profile image
Mourad Bougarne

Thanks so much Ryan, it makes a lot of sense now.

Collapse
shiftyp profile image
Ryan Lynch (he/him) Author

I like it. Very empty