Вопрос проверяет умение работать с вложенными структурами данных и понимать рекурсию.
Чтобы посчитать все элементы, включая вложенные массивы, нужно обойти структуру рекурсивно. Если элемент — массив, мы заходим внутрь и продолжаем подсчёт. Если это обычное значение, увеличиваем счётчик. Такой подход корректно учитывает любую глубину вложенности.
Массив может содержать:
Примитивные значения
Другие массивы
Поэтому задача сводится к обходу дерева.
function countItems(arr) {
let count = 0;
for (const item of arr) {
if (Array.isArray(item)) {
count += countItems(item);
} else {
count++;
}
}
return count;
}
countItems([1, [2, 3], [4, [5]]]); // 5
Проверка через Array.isArray
Базовый случай — обычное значение
Рекурсия естественно отражает структуру данных
Временная сложность: O(n), где n — общее количество элементов
Память: зависит от глубины вложенности (call stack)
Рекурсия — самый читаемый и универсальный способ посчитать элементы во вложенных массивах.