ปัญหา
เราต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ซ้อนกัน (nested array) และคืนจำนวนสมาชิกแบบ deep count
Input
const arr = [1, 2, [3, 4, [5]]];
Output
const output = 7;
เพราะสมาชิกระดับ 1 มี 2 ตัว ระดับ 2 มี 2 ตัว ระดับ 3 มี 1 ตัว รวม deep count = 7
ตัวอย่าง
โค้ดด้านล่างนี้
const arr = [1, 2, [3, 4, [5]]];
const deepCount = (arr = []) => {
return arr
.reduce((acc, val) => {
return acc + (Array.isArray(val) ? deepCount(val) : 0);
}, arr.length);
};
console.log(deepCount(arr));คำอธิบายโค้ด
เราใช้ Array.prototype.reduce() วนลูปอาร์เรย์ และถ้าพบอาร์เรย์ซ้อน เรียกฟังก์ชันซ้ำ (recursive)
ผลลัพธ์
7