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

การสร้างสตริงจากเมทริกซ์ตัวอักษรและอาร์เรย์ตัวเลขใน JavaScript

ปัญหา

เราต้องเขียนฟังก์ชัน JavaScript ที่รับเมทริกซ์ n×n ของตัวอักษร และอาร์เรย์จำนวนเต็ม (บวกและไม่ซ้ำ) ฟังก์ชันควรสร้างสตริงจากตัวอักษรที่ดัชนี 1-based อยู่ในอาร์เรย์ตัวเลข

เมทริกซ์ตัวอักษร:

[
  ['a', 'b', 'c', 'd'],
  ['o', 'f', 'r', 'g'],
  ['h', 'i', 'e', 'j'],
  ['k', 'l', 'm', 'n']
]

อาร์เรย์ตัวเลข:

[1, 4, 5, 7, 11]

ควรคืน 'adore' เพราะเป็นตัวอักษรที่ดัชนี 1-based ตามอาร์เรย์ในเมทริกซ์

ตัวอย่าง

โค้ดตัวอย่างด้านล่าง:

const arr = [
  ['a', 'b', 'c', 'd'],
  ['o', 'f', 'r', 'g'],
  ['h', 'i', 'e', 'j'],
  ['k', 'l', 'm', 'n']
];
const pos = [1, 4, 5, 7, 11];
const buildString = (arr = [], pos = []) => {
  const flat = [];
  arr.forEach(sub => {
    flat.push(...sub);
  });
  let res = '';
  pos.forEach(num => {
    res += (flat[num - 1] || '');
  });
  return res;
};
console.log(buildString(arr, pos));

ผลลัพธ์

adore

คำอธิบายเพิ่มเติม

Flatten เมทริกซ์ 4×4 เป็นอาร์เรย์ 16 ตัวอักษร (row-major order) ดัชนี 1,4,5,7,11 → a, d, o, r, e = "adore" โค้ดใช้ flat[num-1] เพราะดัชนี 1-based