เขียนฟังก์ชัน 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 แทน) ตามเงื่อนไขโจทย์