function steamrollArray(arr) { // I'm a steamroller, baby console.log(arr, '->') let arrUnchanged = false while (!arrUnchanged) { let initialLength = arr.length for (let i = 0 ; i < initialLength ; i++) { if ( Array.isArray(arr[i]) ) arr.splice(i, 1, ...arr[i]) } arrUnchanged = arr.every(elem => !Array.isArray(elem)) } console.log(arr) return arr; } steamrollArray([1, [2], [3, [[4]]]]);