Action语句通过return语句递归循环

时间:2012-08-03 09:57:24

标签: flex recursion return

如果在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;
}  

1 个答案:

答案 0 :(得分:1)

您无法在任何地方捕获递归调用

您没有在此检查返回值

 if (value.hasOwnProperty("children"))
    {
            this.recursiveFindFunction(value.children);
    }   

可能的解决方法是添加一个return语句:

 if (value.hasOwnProperty("children"))
    {
            return this.recursiveFindFunction(value.children);
    } 

(注意返回)