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

นับสมาชิกอาร์เรย์แบบ Deep Count ใน JavaScript


ปัญหา

เราต้องเขียนฟังก์ชัน 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