ปัญหา
เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์องค์ประกอบที่ซ้อนกันและส่งคืนจำนวนองค์ประกอบที่มีอยู่ในอาร์เรย์
ป้อนข้อมูล
const arr = [1, 2, [3, 4, [5]]];
ผลผลิต
const output = 7;
เนื่องจากองค์ประกอบที่ระดับ 1 คือ 2 องค์ประกอบที่ระดับ 2 คือ 2 และองค์ประกอบที่ระดับ 3 คือ 1 ดังนั้นการนับลึกคือ 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() เพื่อวนซ้ำบนอาร์เรย์ และหากเราพบอาร์เรย์ที่ซ้อนกันในการวนซ้ำ เราจะเรียกฟังก์ชันของเราซ้ำๆ
ผลลัพธ์
7