Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

เปลี่ยนอาร์เรย์ 2D ให้เป็นอาร์เรย์แบบกระจัดกระจายใน JavaScript


สมมุติว่าเรามีอาร์เรย์ 2 มิติแบบนี้ -

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

เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ดังกล่าว

จากนั้นฟังก์ชันควรสร้างอาร์เรย์ 2 มิติใหม่ที่มีองค์ประกอบทั้งหมดที่เริ่มต้นเป็น undefined นอกเหนือจากดัชนีขององค์ประกอบที่มีอยู่ในอาร์เรย์อินพุต

ดังนั้นสำหรับอาร์เรย์อินพุต

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

และส่วนที่เหลือควรเริ่มต้นองค์ประกอบทั้งหมดเป็นไม่ได้กำหนด

ดังนั้นผลลัพธ์สุดท้ายควรมีลักษณะดังนี้ −

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

ตัวอย่าง

รหัสสำหรับสิ่งนี้จะเป็น −

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

ผลลัพธ์

และผลลัพธ์ในคอนโซลจะเป็น −

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