vararr=['1','2'];vararr1=['a','b','c','d'];vararr2=['!','@','#','$'];//...arr3arr4arr5很多个varnewArr=[];arr.forEach(a1=>{arr1.forEach(a2=>{arr2.forEach(a3=>{newArr.push(a1+a2+a3)})})});如何用函数去实现,可以传入多个数组达到上面的效果
2 回答
慕虎7371278
TA贡献1802条经验 获得超4个赞
functiona(...arrs){returninnerA('',arrs);}functioninnerA(prefix,arrs){const[fisrt,...rest]=arrs;if(!rest.length){returnfisrt.map(i=>prefix+i);}returnfisrt.reduce((acc,i)=>{acc=acc.concat(innerA(prefix+i,rest));returnacc;},[]);}a(['1','2'],['a','b','c','d'],['!','@','#','$']);
互换的青春
TA贡献1797条经验 获得超6个赞
来个循环的,不过效率似乎没递归那个高,可能是因为创建的对象要多一些functionb(...groups){letr=[""];for(letgroupofgroups){r=r.map(t1=>group.map(t2=>t1+t2)).reduce((acc,t)=>acc.concat(t));}returnr;}如果不使用map(),直接用循环会效率高一些,比递归的效率高functionc(...groups){letr=[""];for(letgroupofgroups){constnewr=[];for(lett1ofr){for(lett2ofgroup){newr.push(t1+t2);}}r=newr;}returnr;}
添加回答
举报
0/150
提交
取消