Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
314 views
in Technique[技术] by (71.8m points)

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

附带链接 面试题:分饼干


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)
function loop(fn, n, args = []) {
  if (n === 0) {
    fn.apply(null, args);
    return;
  }

  for (let i = 0; i <= 9; i++) {
    loop(fn, n - 1, args.concat(i));
  }
}


loop((...args) => {
  console.log(args);
}, 3);

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...