如何使嵌套循环动态化?

时间:2015-08-15 15:45:46

标签: for-loop dynamic jstree

我遇到了问题:

例如,有N代,我希望像父母和孩子一样在jstree中执行这些代。

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

我该怎么做?

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

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

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

2 个答案:

答案 0 :(得分:2)

正如您所说,您不能拥有任意数量的嵌套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++) {
          ...
        }
    }
}

答案 1 :(得分:0)

如果你需要一个特定于jstree的解决方案 - 将core.data设置为一个函数 - 每次需要加载一个节点时它都会被执行 - 这样你就可以拥有一个&#34;无限的&#34;动态树可以这么说。