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

ลดรูปอาร์เรย์ซ้อน (Simplify Nested Array) ใน JavaScript

สมมติว่าเรามีอาร์เรย์ของอาร์เรย์ที่มีองค์ประกอบแบบนี้:

const arr = [3, 5, 7, 2, [4, NaN, null, 4, 8, [3, undefined, 24, null], null, 5, 1], NaN, 45, 2, 1];

หน้าที่ของเราคือเขียนฟังก์ชันเรียกซ้ำที่รับอาร์เรย์ซ้อนนี้และแทนที่ค่า falsy ทั้งหมดในอาร์เรย์ (NaN, undefined และ null) ด้วย 0

มาเขียนโค้ดสำหรับฟังก์ชันนี้กัน:

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

const arr = [3, 5, 7, 2, [4, NaN, null, 4, 8, [3, undefined, 24, null], null, 5, 1], NaN, 45, 2, 1];

const recursiveSimplify = (arr) => {
  for (let i = 0; i < arr.length; i++) {
    if (Array.isArray(arr[i])) {
      recursiveSimplify(arr[i]);
    } else if (!arr[i]) {
      arr[i] = 0;
    }
  }
};

recursiveSimplify(arr);
console.log(arr);

ผลลัพธ์

ผลลัพธ์ในคอนโซลจะเป็นดังนี้:

[
  3, 5, 7, 2,
  [4, 0, 0, 4, 8, [3, 0, 24, 0], 0, 5, 1],
  0, 45, 2, 1
]