搜索

首页  >  问答  >  正文

javascript - 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页面里,供大家参考

附带链接 面试题:分饼干

PHP中文网PHP中文网2775 天前480

全部回复(3)我来回复

  • 大家讲道理

    大家讲道理2017-05-19 10:45:39

    雷雷

    回复
    0
  • 仅有的幸福

    仅有的幸福2017-05-19 10:45:39

    使用构建字符串的方式实现了,但感觉太不优雅了。。

    var deep = (fn, deeplen) =>{
      var rs = null;
      var args = [];
      var content = 'var trueArgs = [];for(var i =0;i<args.length;i++){trueArgs[i]=eval(args[i])}rs = fn(trueArgs);';
      for (var i = 0; i < deeplen; i++) {
        args.push(`iter${i}`);
        content = `for ( var iter${i} = 0; iter${i}<=9; iter${i}++){ ${content} }`;
      }
      new Function('fn', 'args', content)(fn, args);
      return rs;
    }

    面试题参考代码

    回复
    0
  • 大家讲道理

    大家讲道理2017-05-19 10:45:39

    雷雷

    回复
    0
  • 取消回复