以下这些方法你得熟悉reduce方法和some方法
方法一:
let arr=[1,2,3,[4,5],[6,7,[8,9,[10]]]] function flat(arr,depth){ if(depth<=0){ return arr; } return arr.reduce((pre,cur)=>{ if(Array.isArray(cur)){ return pre.concat(flat(cur,depth-1)); } return pre.concat(cur); },[]) } console.log(flat(arr,3));
方法二:
let arr=[1,2,3,[4,5],[6,7,[8,9,[10]]]] function flat(arr,depth){ return depth ===0 ? arr :arr.reduce((pre,cur)=>Array.isArray(cur) ? pre.concat(flat(cur,depth-1) ): pre.concat(cur),[]) } console.log(flat(arr,2));
方法三:
let arr=[1,2,3,[4,5],[6,7,[8,9,[10]]]] function flat(dep,array){ while(dep){ array=array.reduce((pre,cur)=>{ if(Array.isArray(cur)){ pre.push(...cur); }else{ pre.push(cur); } return pre; },[]); --dep; } return array; } console.log(flat(2,arr));
方法四:
let arr=[1,2,3,[4,5],[6,7,[8,9,[10]]]] Array.prototype.flat=function(depth){ let originSource=[...this]; while(depth){ if(originSource.some(item=>Array.isArray(item))){ originSource=[].concat(...originSource); console.log(originSource); } depth--; } return originSource; } console.log(arr.flat(3));
JS提升:实现flat平铺的底层原理
最新推荐文章于 2024-07-30 22:36:34 发布