Реализуйте функцию flatten(arr), которая раскрывает все уровни вложенности массива.
flatten([1, [2, [3, [4]], 5]])
// => [1, 2, 3, 4, 5]
flatten([[1, 2], [3], [4, [5, 6]]])
// => [1, 2, 3, 4, 5, 6]
Не используйте Array.prototype.flat().
Базовый случай — если элемент не массив, кладём его в результат. Если массив — рекурсивно разворачиваем и spread'им в результат.
Альтернатива через reduce: arr.reduce((acc, item) => acc.concat(Array.isArray(item) ? flatten(item) : item), []) — лаконично, но создаёт новый массив на каждой итерации.