使用reduce
function flatArr(arr) {
return arr.reduce((pre, cur) =>
Array.isArray(cur) ?
[...pre, ...flatArr(cur)] :
[...pre, cur], []);
}
使用forEach
let arr = [1, 2, [3, [5, [6], [7, [8]]], [4]]]
// let num = 0 // 测试执行次数 ,用于测试
let count = 0 // 记录每次深层维度数组的索引
function deepFlat (array) {
array.forEach((item, index) => {
// 减少不必要的流程
if (index < count) {
return
}
// num += 1
// console.log(num)
if (Array.isArray(item)) {
count = index + 1
array.splice(index, 1, ...item)
deepFlat(array)
}
})
return array
}
console.log(deepFlat(arr)) // [1, 2, 3, 5, 6, 7, 8, 4]