var a =[1,[2,3,[4,5]]]//Infinity 全部平铺
a.flat(Infinity)
正则
var a =[1,[2,3,[4,5]]]
var b = JSON.stringify(a).replace(/\[|\]/g,'')// b: '1,2,3,4,5'
var c= JSON.parse('['+b+']')// c: [1, 2, 3, 4, 5]
递归
var a =[1,[2,3,[4,5]]]
var c =[]const fun =(arr)=>{for(let i =0;i< arr.length;i ++){if(Array.isArray(arr[i])){fn(arr[i])}else{
c.push(arr[i])}}}fun(a)// c: [1, 2, 3, 4, 5]
reduce
var a =[1,[2,3,[4,5]]]const newArr =(arr)=>{return arr.reduce((pre,cur)=>{return pre.concat(Array.isArray(cur)?newArr(cur): cur)},[])};
var c =newArr(a)// c: [1, 2, 3, 4, 5]
使用栈的思想实现flat函数
var a =[1,[2,3,[4,5]]]const fn =(arr)=>{const newArr =[];const stack =[].concat(arr);while(stack.length !==0){const val = stack.pop();if(Array.isArray(val)){
stack.push(...val);}else{
newArr.unshift(val);}}return newArr;};
var c =fn(a)// c: [1, 2, 3, 4, 5]