steamrollArray

flatten without .flat

by trentHarlem

JavaScript

function steamrollArray(arr) {
  return arr.reduce((acc, cur) => acc.concat(Array.isArray(cur) ? steamrollArray(cur) : cur), [])
 }


/* function steamrollArray(arr) {
    let flat = [];
    for (let i = 0; i < arguments.length; i++) {
        if (arguments[i] instanceof Array) {     
 
            flat.push.apply(flat, steamrollArray.apply(this, arguments[i]));
        } else {
            flat.push(arguments[i]);
        }
    }
    console.log(flat)
    return flat;
} */




/* function steamrollArray(arr) {
console.log(arr)
let temp = []
//let temp = Array.from(...arguments)
//console.log('temp',temp)
 const out = arr.forEach(el=> {
 console.log(typeof(el))
 temp.push(el)
 console.log(temp)
 })
 
  return out
 // return arr.map(el => el.forEach(el=> temp.push(el)))
} */
console.log(steamrollArray([1, [2], [3, [[4]]]])) //should return [1, 2, 3, 4].