let arr =[1,2,[3,4],[5,[6,7]]];functionflat(arr){let result =[];for(let i =0; i < arr.length; i++){// 判断数组的元素是否为数组if(Array.isArray(arr[i])){// 如果为数组,就进行递归
result = result.concat(flat(arr[i]));}else{// 如果不是数组,直接push到数组里面
result.push(arr[i]);}}return result;}
console.log(flat(arr));// [1,2,3,4,5,6]
2.1.2 利用扩展运算符和数组方法some
具体思路就是遍历数组arr,只要没有完全拍平,就一直进行扁平化操作
let arr =[1,2,[3,4],[5,[6,7]]];functionflat(arr){// 主要数组元素还是多维数组,就会一直为true,一直指向拍平操作while(arr.some((item)=> Array.isArray(item))){
arr =[].concat(...arr);
console.log(arr);}return arr;}
console.log(flat(arr));
2.1.3 利用reduce方法进行迭代
let arr =[1,2,[3,4],[5,[6,7]]];functionflat(arr){return arr.reduce((pre, cur)=>{return pre.concat(Array.isArray(cur)?flat(cur): cur);},[]);}
console.log(flat(arr));
2.1.4 利用toString方法将数组扁平化
let arr =[1,2,[3,4],[5,[6,7]]];functionflat(arr){return arr
.toString().split(',').map((item)=>Number(item));}
console.log(flat(arr));