我有以下递归javascript函数,它在Backbone.Marionette CollectionView的子级上循环,该子级具有依次为CollectionViews的ItemViews:
findViewByCid: function(cid, children){
var col = (arguments.length === 1) ? this.children : children;
if(cid in col){
return col[cid];
}
for(child in col){
var grandChildren = col[child].children;
if(cid in grandChildren){
return grandChildren[cid];
}
if(grandChildren && (!jQuery.isEmptyObject(grandChildren))){
return this.findViewByCid(cid, grandChildren);
}
}
}
我是这样称呼它的:
var view=DocumentManager.Documents.TreeRoot.FindViewByCID(model.cid);
问题是这一行:
return this.findViewByCid(cid, grandChildren);
如果我有这样的等级
c1
|_c2
|_c3
|_c4
|_c5
然后te return语句将导致函数在通过th3,c2节点后退出,并且永远无法到达c4等。
如果我移除return语句,将找到正确的子项,但返回null。
如何继续解析层次结构并返回值?
返回将退出您的函数。
尝试将所有内容保存在var中,并在最后返回,如果需要返回多个值,它可以是一个数组。(不要在for循环中声明var!)
这里有一个建议:
findViewByCid: function(cid, children){
var willBeReturned=[];
var grandChildren;
var col = (arguments.length === 1) ? this.children : children;
if(cid in col){
willBeReturned[willBeReturned.length] = col[cid];
}
for(child in col){
grandChildren = col[child].children;
if(cid in grandChildren){
willBeReturned[willBeReturned.length] = grandChildren[cid];
}
if(grandChildren && (!jQuery.isEmptyObject(grandChildren))){
willBeReturned[willBeReturned.length] = this.findViewByCid(cid, grandChildren);
}
}
return willBeReturned;
}
我需要一个递归函数,首先返回最深的项,因为反转数组和推到第一个位置很慢。 我有一个目标: 和一个递归函数: 我需要一个递归函数,它可以返回一个对象父id的数组,这样最后一个父id就位于返回数组的第一位。对于上面的例子,如果我将该对象传入我的函数,它应该返回父对象的id,如下所示:
我不得不使用全局变量found来指示在哪里找到了一个和。返回语句始终未定义。 此外,如果在下面的if语句中使用return语句,代码将无法正常工作。 这不是问题的最佳解决方案,但这是我得到的工作版本。 返回语句之间的****,删除时代码工作,否则我要么得到false或未定义。我不明白这部分!为什么删除返回就能解决问题,我认为每个递归调用都必须用返回语句进行。 问题可能是由于多次呼叫造成的吗?我是不
问题内容: 我有一个像这样的递归函数 我正在使用它 我注意到您好永远不会返回,因为我怀疑我在递归调用上创建了多个promise,但是我不确定如何从中返回。 如何返回每个递归创建的Promise? 编辑: 结果是 问题答案: 递归是一种功能性遗产,因此将其与功能性样式一起使用可产生最佳效果。这意味着编写接受和操作其输入(而不是依赖于外部状态)和返回值(而不是依赖于突变或副作用)的函数。 你的程序,而
我正在创建一个递归导航迷宫的程序。代码: 然而,每当我到达死胡同时,它都不会回溯。当我调试时,它表明当程序从递归或“回溯”返回时,我的起始值专注于停留在我的死胡同空间。 例如: 9是我的出发点。2是我的退出。4是我的道路。1 表示墙壁。当我到达一个死胡同时(在本例中为第 7 行,第 2 列)。我的立场是等于整个程序其余部分的死胡同空间。这是为什么呢?
我正在研究一个简单的递归方法,在Ruby中实现Euclid的算法,并发现自己在弄清楚一旦达到基本情况后如何返回所需的值。以下是我必须了解的内容: 并且输出: 注意,“puts euclid_alg(100,15)”没有输出,我希望返回100和15,5的最大公约数。 为了进行故障排除,我将第3行中的替换为。新的产出是: 将“make it here 5 10”添加到控制台输出中,可以清楚地表明 re
我一直在用这个四叉树http://www.astroml.org/book_figures/chapter2/fig_quadtree_example.html 在一些数据上。但是我现在需要结果结构的嵌套表示。 其结构类似于: 这里的子元素是递归元素,它是一个列表,包括进一步的实例。最低深度没有子级(为0),是我想要访问的表示。因此,在这种情况下,我会访问数据 最终,我希望在最低级别的数据表示像: