sevenLee
7/31/2017 - 7:04 AM

Flat Array

Flat Array

const a = [[2, 3, 5], [6, 7], ['a', 'b']]
const b = [7,8,9]

const concatFn = (result, array) => {
    const tempFlat = result.concat(array)
    let flatIndex = 0
    const shouldToFlat = tempFlat.some((elm, index) => {
        flatIndex = index 
        return Array.isArray(elm)
    })

    if(shouldToFlat){
        return flatArray(tempFlat[flatIndex], tempFlat.slice(flatIndex+1))
    }else{
        return tempFlat
    }

}

const flatArray = (complex, base) => {
    return complex.reduce((result, a) => {
        return concatFn(result, a)
    }, base)
}

const final = concatFn(a, b)

console.log(final)