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

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

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

哈士奇WWW 2019-03-13 13:13:42
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;

}


查看完整回答
反对 回复 2019-04-15
  • 2 回答
  • 0 关注
  • 344 浏览
慕课专栏
更多

添加回答

举报

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