Подсчёт всех целых элементов в вложенном массиве

Обойдите вложенные массивы и увеличивайте счётчик для числовых значений. В заголовке сказано «целых», а в тексте — «числовых»: критерий следует выбрать явно.

Короткий ответ

Что ответить на собеседовании

Обойдите вложенные массивы и увеличивайте счётчик для числовых значений. В заголовке сказано «целых», а в тексте — «числовых»: критерий следует выбрать явно.

Подробный разбор

Ответ с пояснениями

Условие

Дан массив, который может включать как числа, так и другие массивы произвольной глубины вложенности. Необходимо реализовать функцию, которая вернёт общее количество числовых значений, встречающихся в структуре любого уровня.

// Примеры:
// console.log(getCountNum([[[][]]])); // 0
// console.log(getCountNum([[0, [1, [5, [4, 3], 1], 1]])); // 7
// console.log(getCountNum([[[[1], 2], 3, 4, [1, [5, 3, 0, [6, 7]]]]]));

Ответ

Обойдите вложенные массивы и увеличивайте счётчик для числовых значений. В заголовке сказано «целых», а в тексте — «числовых»: критерий следует выбрать явно.

function getCountNum(array) {
  const stack = [array];
  let count = 0;
  while (stack.length) {
    const value = stack.pop();
    if (Array.isArray(value)) {
      for (const item of value) stack.push(item);
    } else if (typeof value === 'number') count++;
  }
  return count;
}

Это вариант для всех значений типа number, включая NaN и Infinity. Для целых замените условие на Number.isInteger(value), для конечных чисел — Number.isFinite(value). Предполагаются конечные вложенные массивы без циклов. Примеры в условии содержат ошибки скобок; для [[0,[1,[5,[4,3],1],1]]] ответ действительно 7.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее