Hack Frontend Community

Разворачивание вложенных массивов(flatten)

Авито
Необходимо написать функцию flatten(array), которая разворачивает вложенные массивы в исходный массив. Данные остальных типов должны остаться без изменений. Решение должно учитывать любую вложенность элементов (т.е. не должно содержать рекурсивные вызовы).
Ограничения:
  • - Рекурсию использовать нельзя
  • - Встроенный метод Array.prototype.flat() использовать нельзя
  • - Нельзя использовать никакие методы модифицирующие массивы после создания кроме pop/push

Примеры:

Input 1: [0, [1, [2, 3]], 4]
Output 1: [0, 1, 2, 3, 4]
Input 2: [1, "string", [2, [3, "4"]], { a: 1 }]
Output 2: [1, "string", 2, 3, "4", { a: 1 }]
Input 3: [[], [1], [[2, 3]], [[4], [5, [6]]]]
Output 3: [1, 2, 3, 4, 5, 6]
Input 4: [1, [2, [3, [4], [5, [6], [7, [8, [9]]]]]]]
Output 4: [1, 2, 3, 4, 5, 6, 7, 8, 9]
Input 5: [1, [null, undefined], [[true, false]]]
Output 5: [1, null, undefined, true, false]
Run your code to see results.