如何使嵌套循环动态化?

How to make a nested loop dynamic?

我有一个问题:

比如有N个generation,我想在jstree中像parents和children一样执行这些generations

我只能使用固定数量的嵌套 for 循环。我不知道如何让它动态化,即我想嵌套 N for 个循环。

我该怎么做?

我只能使用固定数量的嵌套循环,比如

for (i=0;i<=list1.size;i++){
    for (j=0;j<=list2.size;j++){
       // and some other  loops
    }
}

但这是静态的。我希望能够动态执行N个循环。

如您所说,您不能拥有任意数量的嵌套 for 循环。实现此目的的方法是使用 recursion.

这是一个例子:

function foo(list_of_lists) {
    // base case
    if (list_of_lists.length == 0) return;

    // otherwise, we'll get the head of the list, and continue
    list = list_of_lists[0];
    for (var idx = 0; idx <= list.length; idx++) {
        // do something

        // now recursively nest the next list in a for-loop
        foo(list_of_lists.splice(1));
    }
}

对于 N 个列表,这将构建如下所示的嵌套 for 循环:

for (var idx = 0; idx <= list0.length; idx++) {
    for (var idx2 = 0; idx2 <= list2.length; idx2++) {
        for (var idx3 = 0; idx3 <= list3.length; idx3++) {
          ...
        }
    }
}

如果你需要一个 jstree 特定的解决方案 - 将 core.data 设置为一个函数 - 每次需要加载节点时都会执行它 - 这样你就可以拥有一个 "infinite" 动态树所以说话。