【JZ】手寫一個ES6的數組flat方法

flat()方法用於壓平數組,能夠傳入參數表示須要壓平幾層,默認爲1,若是不管數組有多少層,最後都須要歸爲一維數組的話,傳入infinity數組

實現
(思想:循環遍歷數組每一項,將其仍爲數組的元素遞歸調用實現壓平)code

function _flat(arr){
    let newArr = []
    arr.forEach(item => {
        if(Array.isArray(item)){
            newArr = newArr.concat(arguments.callee(item))
        }else{
            newArr.push(item)
        }
    })    
    return newArr
}

以上經過循環遍歷的方法實現了無限壓平
若是想要完美實現原生帶參數的flat方法,須要藉助reduce方法遞歸

相關文章
相關標籤/搜索