Рекурсивно обходите вложенные массивы, добавляя в результат все немассивные значения без преобразования их типов.
Приведение вложенного массива к однородному виду
Рекурсивно обходите вложенные массивы, добавляя в результат все немассивные значения без преобразования их типов.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Дан массив, в котором могут присутствовать элементы разных типов и произвольное количество вложенных массивов. Необходимо написать функцию, которая рекурсивно разворачивает все вложения и формирует новый массив, где каждый элемент находится на единственном уровне.
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 сломаны кавычки и есть вызов массива как функции: сначала нужен корректный литерал. Пример алгоритма не исправляет эти ошибки молча. Предполагаются ациклические плотные массивы; для большой глубины используйте стек.