温温酱
是写出这个方法的大致逻辑嘛?functionflat(arr,deepth){newArr=[]deepth--arr.forEach(v=>{if(vinstanceofArray){newArr.push(...v)}else{newArr.push(v)}})if(deepth>0)flat(newArr,deepth)returnnewArr}vararr=[1,2,[3,4],[5,[6,7,[8,9,10]]]]varflatArr=flat(arr,2)console.log(flatArr)
慕码人8056858
参考MDNArray.prototype.flat(),使用flat或reduce//使用reduce、concat和递归无限反嵌套多层嵌套的数组vararr1=[1,2,3,[1,2,3,4,[2,3,4]]];functionflattenDeep(arr1){returnarr1.reduce((acc,val)=>Array.isArray(val)?acc.concat(flattenDeep(val)):acc.concat(val),[]);}flattenDeep(arr1);//[1,2,3,1,2,3,4,2,3,4]//不使用递归,使用stack无限反嵌套多层嵌套数组vararr1=[1,2,3,[1,2,3,4,[2,3,4]]];functionflatten(input){conststack=[...input];constres=[];while(stack.length){//使用pop从stack中取出并移除值constnext=stack.pop();if(Array.isArray(next)){//使用push送回内层数组中的元素,不会改动原始输入originalinputstack.push(...next);}else{res.push(next);}}//使用reverse恢复原数组的顺序returnres.reverse();}flatten(arr1);//[1,2,3,1,2,3,4,2,3,4]