猿问

js如何实现指定深度的嵌套方法

今天遇见一个面试题,用js实现算法时发现一个问题,如何用js实现这样一个方法,给定一个函数和嵌套深度(int类型),返回如下所示的一个嵌套的结构?

给定参数:fn,deepLength

返回结构(以deepLength=3为例):

  for (var x = 0; x <= 9; x++) {

    for (var y = 0; y <= 9; y++) {

      for (var z = 0; z <= 9; z++) {

        rs = fn([x,y,z])

      }

    }

  }

想了一阵,感觉好像只能通过嵌套函数实现,是否有比较优雅的实现方法呢?


总结了一下大家的方法,放到了一个demo页面里,供大家参考

附带链接 面试题:分饼干


大话西游666
浏览 649回答 1
1回答

芜湖不芜

function loop(fn, n, args = []) {&nbsp; if (n === 0) {&nbsp; &nbsp; fn.apply(null, args);&nbsp; &nbsp; return;&nbsp; }&nbsp; for (let i = 0; i <= 9; i++) {&nbsp; &nbsp; loop(fn, n - 1, args.concat(i));&nbsp; }}loop((...args) => {&nbsp; console.log(args);}, 3);
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答