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

求大佬指点哈!函数封装,求指导?

求大佬指点哈!函数封装,求指导?

POPMUISE 2019-06-10 09:30:45
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 回答

?
慕码人8056858

TA贡献1803条经验 获得超6个赞

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-06-10
?
哔哔one

TA贡献1854条经验 获得超8个赞

来个循环的,不过效率似乎没递归那个高,可能是因为创建的对象要多一些
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-06-10
  • 2 回答
  • 0 关注
  • 155 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信