为了账号安全,请及时绑定邮箱和手机立即绑定

小白,请教各位大佬!这种类型函数应该怎么封装谢谢哈~

小白,请教各位大佬!这种类型函数应该怎么封装谢谢哈~

呼唤远方 2019-08-14 00:31:40
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 回答

?
紫衣仙女

TA贡献1839条经验 获得超15个赞

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'],['!','@','#','$']);
                            
查看完整回答
反对 回复 2019-08-14
?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

来个循环的,不过效率似乎没递归那个高,可能是因为创建的对象要多一些
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;
}
                            
查看完整回答
反对 回复 2019-08-14
  • 2 回答
  • 0 关注
  • 311 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号