Javascript 在运行时更改每个循环的嵌套深度级别

Javascript 在运行时更改每个循环的嵌套深度级别,javascript,arrays,Javascript,Arrays,我希望能够以指定的深度对同一集合进行迭代。 例如: function (depth){ var arr = [1,2,3]; //depth = 1 arr.forEach(function(val) { func(val); }); // depth = 2 arr.forEach(function (val) { arr.forEach( function (val2) {

我希望能够以指定的深度对同一集合进行迭代。 例如:

function (depth){
    var arr = [1,2,3];

    //depth = 1

    arr.forEach(function(val) { 
        func(val); 
    });


    // depth = 2

    arr.forEach(function (val) { 
            arr.forEach( function (val2) { 
                func(val, val2); 
            });
    });

    //and so on

}

在JS中有什么方法可以做到这一点吗?

您可以编写一个函数来跟踪您的位置,并删除一个直到达到零为止

function goDeep (depth, array, func) {
  if ( depth && array && array.length ) {
    array.forEach(function (element) {
      goDeep(depth-1, element, func)
    });
  } else {
     func(array)
  }
}

这叫做递归;您应该定义func,以便它在数组中遇到另一个级别时调用自己,并查看此注释以获取建议。