// 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))