var arr = ['1','2'];var arr1 =['a','b','c','d'];var arr2 =['!','@','#','$'];// ... arr3 arr4 arr5 很多个var newArr = [];arr.forEach(a1=>{ arr1.forEach(a2=>{ arr2.forEach(a3=>{ newArr.push(a1+a2+a3) }) })});如何用函数去实现,可以传入多个数组达到上面的效果
2 回答
互换的青春
TA贡献1797条经验 获得超6个赞
来个循环的,不过效率似乎没递归那个高,可能是因为创建的对象要多一些
function b(...groups) {
let r = [""];
for (let group of groups) {
r = r.map(t1 => group.map(t2 => t1 + t2))
.reduce((acc, t) => acc.concat(t));
}
return r;
}
如果不使用 map(),直接用循环会效率高一些,比递归的效率高
function c(...groups) {
let r = [""];
for (let group of groups) {
const newr = [];
for (let t1 of r) {
for (let t2 of group) {
newr.push(t1 + t2);
}
}
r = newr;
}
return r;
}
添加回答
举报
0/150
提交
取消