Mô tả vấn đề
Chúng ta cần viết hàm JavaScript nhận vào mảng lồng nhau và trả về số lượng phần tử đếm sâu (deep count).
Đầu vào
const arr = [1, 2, [3, 4, [5]]];
Đầu ra
const output = 7;
Vì cấp 1 có 2 phần tử, cấp 2 có 2, cấp 3 có 1 → tổng 7.
Ví dụ minh họa
Mã thực hiện (reduce + đệ quy):
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));Giải thích mã
Dùng Array.prototype.reduce() duyệt mảng, nếu gặp mảng lồng thì gọi đệ quy.
Đầu ra
Kết quả trong console:
7