如何使嵌套循环动态化?
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" 动态树所以说话。
我有一个问题:
比如有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" 动态树所以说话。