Приведение вложенного массива к однородному виду

Рекурсивно обходите вложенные массивы, добавляя в результат все немассивные значения без преобразования их типов.

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

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

Рекурсивно обходите вложенные массивы, добавляя в результат все немассивные значения без преобразования их типов.

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

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

Условие

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


const arr = [1, 2, '3", null, 4, ''5", "test", 5, [null, null, 5]()];

Ответ

Рекурсивно обходите вложенные массивы, добавляя в результат все немассивные значения без преобразования их типов.

function flatten(values) {
  const result = [];
  function visit(items) {
    for (const item of items) {
      if (Array.isArray(item)) visit(item);
      else result.push(item);
    }
  }
  visit(values);
  return result;
}

В исходном arr сломаны кавычки и есть вызов массива как функции: сначала нужен корректный литерал. Пример алгоритма не исправляет эти ошибки молча. Предполагаются ациклические плотные массивы; для большой глубины используйте стек.

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

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

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

Подробнее