Turning a 2D array into a sparse array of arrays in JavaScript


Suppose, we have a 2-D array like this −

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

We are required to write a JavaScript function that takes in one such array.

The function should then create a new 2-D array that contains all elements initialized to undefined other than the element's index present in the input array.

Therefore, for the input array,

output[3][1] = 1;
output[2][12] = 1;
output[3][3] = 1;

And rest all elements should be initialized to undefined

Therefore, the final output should look like −

const output = [
   undefined,
   undefined,
   [
      undefined,
      undefined,
      undefined,
      undefined,
      undefined,
      undefined,
      undefined,
      undefined,
      undefined,
      undefined,
      undefined,
      undefined,
      1
   ],
   [
      undefined,
      1,
      undefined,
      1
   ]
];

Example

The code for this will be −

const arr = [
   [3, 1],
   [2, 12],
   [3, 3]
];
const map2D = (arr = []) => {
   const res = [];
   arr.forEach(el => {
      res[el[0]] = res[el[0]] || [];
      res[el[0]][el[1]] = 1;
   });
   return res;
};
console.log(map2D(arr));

Output

And the output in the console will be −

[
   <2 empty items>,
   [ <12 empty items>, 1 ],
   [ <1 empty item>, 1, <1 empty item>, 1 ]
]

Updated on: 24-Nov-2020

144 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements