数组扁平化
将多维数组转换成一维数组
最简单的方法 数组的flat方法
let arr = [1,[1,2,3],4,[12,13,[14,15,16],17],20,21,22];
console.log(arr.flat(2));
//flat里面的参数代表数组的深度 如不想编程一维 可以在里面填1
console.log(arr.flat(1));
reduce结合递归来实现
let arr = [1,[1,2,3],4,[12,13,[14,15,16],17],20,21,22];
// reduce方法 判断当前循环的数是否是数组 如果是则再递归调用再循环直到里面没有数组不是则直接进行合并
function flaten2(ARR){
return ARR.reduce((newArr,curr)=> (Array.isArray(curr) ? [...newArr,...flaten2(curr)] : [...newArr,curr]),[]);
};
console.log(flaten2(arr));
some函数
function flaten(ar){
while(ar.some(item=>Array.isArray(item))){
// console.log(...ar);
ar = [].concat(...ar);
};
return ar;
};
console.log(flaten(arr));