SOURCE

function flatten(arr, dep, result) {
    result || (result = [])
    if(arr.length === 0) return []
    for(let val of arr) {
        if(dep > 0 && Array.isArray(val)) {
            if(dep >= 1) {
                flatten(val, dep - 1, result) //重点:这里是dep - 1
            } else {
                result.push(val)
            }
        } else {
            result.push(val)
        }
    }
    return result
}

console.log(flatten([1,[2,[3,[4,[5,6,[8,[9]],7]]]]], 3))
console 命令行工具 X clear

                    
>
console