第一种方案:array.flat(Infinity)
function _flatten(arr) {
return arr.flat(Infinity)
}
console.log(_flatten([1, [2, 3], 4]))
第二种方案:递归
let res = []
function _flatten(arr) {
for(let i=0; i<arr.length; i++){
if(Array.isArray(arr[i])){
_flatten(arr[i])
}else{
res.push(arr[i])
}
}
}
_flatten([1, [2, 3, [4, 5], 6], 7, 8])
console.log(res)
第三种:递归+reduce
function _flatten(arr){
return arr.reduce((resArr, item) => {
if(Array.isArray(item)){
return resArr.concat(_flatten(item))
}else{
return resArr.concat(item)
}
}, [])
}
console.log(_flatten([1, [2, 3, [4, 5], 6], 7]))