原生
let x = [0, 1, 2, [[[3, 4]]]];
x.flat(3)
x.flat(Infinity)
手写实现
递归
function flat(arr){
let temp = []
arr.forEach(v=>{
temp = temp.concat(Array.isArray(v) ? flat(v) :v)
})
return temp
}
原数组上修改
let arr = [3, 4, [4, 5, ['s']]]
function flat(arr) {
let i = 0
while(i < arr.length) {
if(Array.isArray(arr[i])) {
let tmp = flat(arr[i])
arr.splice(i, 1, ...tmp)
i += tmp.length - 1
}
i++
}
return arr
}
flat(arr) //[3, 4, 4, 5, 's']