原始数组
let arr = [1, [2, [3, [4, 5]]], 6];
方法1: 利用 ES6 的 flat 方法
console.log(arr.flat(Infinity));
方法2: 递归方法
let result = []
function fn(arr) {
for (var i = 0; i < arr.length; i++) {
if (Array.isArray(arr[i])) {
fn(arr[i])
} else {
result.push(arr[i])
}
}
}
fn(arr)
console.log(result)
方法3: ES6 扩展运算符
while (arr.some(Array.isArray)) {
arr = [].concat(...arr)
}
console.log(arr)
方法4: reduce 方法
function fn(arr) {
return arr.reduce((acc, cur) => {
return acc.concat(Array.isArray(cur) ? fn(cur) : cur)
}, [])
}
console.log(fn(arr))