【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方法递归

相关文章
相关标签/搜索