数组扁平化
1.通过es6 数组flat 方法
let Arr = [1,[2, [3, 4]]]
// 默认扁平化一层,且不改变原数组
console.log(Arr.flat())
// 参数默认1,标示扁平化处理一层, Infinity全部扁平化处理
console.log(Arr.flat(Infinity))
2.通过数组reduce、concat实现
// 通过数组reduce
function iterTree3(arr) {
var newArr = arr.reduce((prev, current) => {
return prev.concat(Array.isArray(current) ? iterTree3(current) : current)
}, []);
return newArr;
}
console.log(iterTree3(Arr));
3.通过数组some、while语句实现
// 通过some while语句实现
function iterTree2(arr) {
while (arr.some(item => Array.isArray(item))) {
arr = [].concat(...arr);
}
return arr;
}
console.log(iterTree2(Arr));
4.扩展运算符
while (Arr.some(Array.isArray)) {
Arr = [].concat(...Arr);
}
console.log(Arr)
5.递归处理
let result = [];
let fn = function(Arr) {
for(let i = 0; i < Arr.length; i++) {
let item = Arr[i];
if (Array.isArray(Arr[i])){
fn(item);
} else {
result.push(item);
}
}
}
fn(Arr)