这种类型函数应该怎么封装

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)

       })

    })

});

如何用函数去实现,可以传入多个数组达到上面的效果

哈士奇WWW
浏览 345回答 2
2回答

互换的青春

来个循环的,不过效率似乎没递归那个高,可能是因为创建的对象要多一些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;}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript