Computer >> Máy Tính >  >> Lập trình >> Javascript

Biến mảng 2D thành một mảng thưa thớt trong JavaScript

Giả sử, chúng ta có một mảng 2-D như thế này -

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

Chúng tôi được yêu cầu viết một hàm JavaScript có trong một mảng như vậy.

Sau đó, hàm sẽ tạo một mảng 2-D mới chứa tất cả các phần tử được khởi tạo thành không xác định khác với chỉ số của phần tử có trong mảng đầu vào.

Do đó, đối với mảng đầu vào,

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

Và phần còn lại tất cả các phần tử nên được khởi tạo thành không xác định

Do đó, kết quả cuối cùng sẽ giống như -

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

Ví dụ

Mã cho điều này sẽ là -

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));

Đầu ra

Và đầu ra trong bảng điều khiển sẽ là -

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