如果在ArrayCollection中的某个嵌套级别找到它,我的递归循环应该返回值。一旦找到返回值并由函数返回,但在下一次迭代中,返回值将返回null。我错过了什么或做错了什么?
// calling function
...
foundedItem = this.recursiveFindFunction(valueList);
...
private function recursiveFindFunction(items:ArrayCollection):Object
{
var retVal:Object;
for (var i:int = 0; i < items.length; i++)
{
var value:Object = items.getItemAt(i);
if (value.name == this.attribute.value.directValue as String)
{
retVal = value;
break;
}
if (value.hasOwnProperty("children"))
{
this.recursiveFindFunction(value.children);
}
}
return retVal;
}
答案 0 :(得分:1)
您无法在任何地方捕获递归调用
您没有在此检查返回值
if (value.hasOwnProperty("children"))
{
this.recursiveFindFunction(value.children);
}
可能的解决方法是添加一个return语句:
if (value.hasOwnProperty("children"))
{
return this.recursiveFindFunction(value.children);
}
(注意返回)