flat()方法用于压平数组,可以传入参数表示需要压平几层,默认为1,如果无论数组有多少层,最后都需要归为一维数组的话,传入infinity

实现
(思想:循环遍历数组每一项,将其仍为数组的元素递归调用实现压平)

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方法


绿绿
33 声望3 粉丝