编辑代码

// flat = function (arr) {
//     let newArr = []
//     for(const item of arr){
//         if(Array.isArray(item)){
//             newArr = newArr.concat(flat(item))
//         }else{
//             newArr.push(item)
//         }
//     }
//     return newArr
// }

// reduce实现
const reducer = (accArr,cur) => {
    if(Array.isArray(cur)){
        accArr = accArr.concat(flat(cur))
    }else{[
        accArr.push(cur)
    ]}
    return accArr
}

function flat (arr) {
    let newArr = arr.reduce(reducer,[])
    return newArr;
}

//栈实现

// function flat (arr){
//     let res = []
//     let stack = [].concat(arr)
//     while(stack.length !== 0){
//         let val = stack.pop()
//         if(Array.isArray(val)){
//             stack = stack.concat([...val])
//         }else{
//             res.unshift(val)
//         }
//     }
//     return res
// }
let arr = [0, ,1, 2, [3, [1,2,3]]];

console.log(flat(arr))