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

การคูณแบบเรียกซ้ำในอาร์เรย์ซ้อน - JavaScript

เขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ซ้อน (nested arrays) ที่มีตัวเลข ค่า false (รวมถึง 0) และสตริง แล้วคืนค่าผลคูณของตัวเลขทั้งหมด โดยข้ามค่า 0, null, undefined, false และสตริงไป

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

const arr = [1, 5, 2, null, [
  2, 5, null, undefined, false, 5, [
    1, 3, false, 0, 2
  ], 4, 2, false
], 4, 6, 0];

const recursiveMultiplication = arr => {
  let prod = 1;
  for (let i = 0; i < arr.length; i++) {
    if (Array.isArray(arr[i])) {
      prod *= recursiveMultiplication(arr[i]);
    } else {
      prod *= arr[i] || 1;
    }
  }
  return prod;
};

console.log(recursiveMultiplication(arr));

ผลลัพธ์

576000

หลักการทำงาน

  • ใช้ Recursion (การเรียกซ้ำ) เพื่อเข้าถึงอาร์เรย์ซ้อนทุกระดับ
  • arr[i] || 1 จะทำให้ค่า falsy (0, null, undefined, false, '') กลายเป็น 1 ไม่ส่งผลต่อการคูณ
  • ตัวเลขที่เป็น 0 จะถูกข้าม (คูณด้วย 1 แทน) ตามเงื่อนไขโจทย์