// 1.递归
var array = [1, [2, [3, [4, 5]]]];
function flatDeep(arr) {
let result = [];
arr.forEach(item=>{
if(item instanceof Array){
result = result.concat(flatDeep(item))
}else{
result.push(item)
}
})
return result;
}
console.log(flatDeep(array));
//2.ES6的flat方法
arr.flat([depth])
// 参数depth是指定要提取嵌套数组的结构深度,默认值为1。参数depth也可以传进 Infinity,代表不论多少层都要展开
var array = [1, [2, [3, [4, 5]]]];
function flatDeep(arr) {
return arr.flat(Infinity);
}
console.log(flatDeep(array)); // [ 1, 2, 3, 4, 5 ]
//3.扩展运算符与some函数结合
var array = [1, [2, [3, [4, 5]]]];
function flatDeep(arr) {
while (arr.some((item) => Array.isArray(item))) {
arr = [].concat(...arr);
}
return arr;
}
console.log(flatDeep(array)); // [ 1, 2, 3, 4, 5 ]