Cześć, piszę sobie skrypty na freecodecamp i tam mam zadanie spłaszczyć tablicę w ten sposób:
steamrollArray("a", "b"]) should return ["a", "b"].
steamrollArray([1, [2], [3, 4]]) should return [1, 2, 3, 4].
steamrollArray([1, [], [3, 4]]) should return [1, 3, 4].
steamrollArray([1, {}, [3, 4]]) should return [1, {}, 3, 4].
W linkach pomocniczych dali mi że mogę użyć Array.isArray(). Wiem, że mogę użyć reduce ale chciałem sam napisać tą funkcję. Problem jest taki, że nie mogę użyć żadnej zmiennej poza funkcją a nie wiem jak można byłoby zmienić moją funkcję aby nie było globalnej. Ewentualnie zrobić funkcję w funkcji ale nie wiem czy to ładne rozwiązanie?
var a = [];
function steamrollArray(arr, i = 0) {
var array = arr[i];
if (Array.isArray(array))
{
steamrollArray(array,0);
}
else if (array !== undefined) a.push(array);
if (arr[++i] !== undefined) steamrollArray(arr, i);
return a;
}
console.log(steamrollArray([1, [2], [3, [[4]]]]));