Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

แปลงอาร์เรย์ 2 มิติเป็นอาร์เรย์แบบกระจัดกระจาย (sparse array) ของอาร์เรย์ใน 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;

และสมาชิกที่เหลือทั้งหมดควรเริ่มต้นเป็น undefined ดังนั้น ผลลัพธ์สุดท้ายควรเป็นดังนี้:

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 ]
]