如何循环(数组、对象等)直到达到最后一个值-Actionscript-3

如何循环(数组、对象等)直到达到最后一个值-Actionscript-3,actionscript-3,flash,air,action,Actionscript 3,Flash,Air,Action,好的,我在如何循环一系列对象方面遇到了问题。对象中有对象,对象中有对象。如何循环第一个对象,如果其中有对象,则循环该对象,依此类推 举个例子, path = File.applicationDirectory.resolvePath(file.nativePath); files = path.getDirectoryListing(); 因此,files是[File Object]的数组。数组示例[文件对象],[文件对象],[文件对象] 我循环遍历数组并获取所需的文件值,但其中一个文件对象

好的,我在如何循环一系列对象方面遇到了问题。对象中有对象,对象中有对象。如何循环第一个对象,如果其中有对象,则循环该对象,依此类推

举个例子,

path = File.applicationDirectory.resolvePath(file.nativePath);

files = path.getDirectoryListing();
因此,files是[File Object]的数组。数组示例[文件对象],[文件对象],[文件对象]


我循环遍历数组并获取所需的文件值,但其中一个文件对象是目录,如果是。我想循环遍历它,获取目录列表并重复,直到最后。

正如Eric所说,您可以使用递归,下面是一个示例

var f : File = new File();
f.addEventListener(Event.SELECT, onFolderSelected);
f.browseForDirectory("Choose a directory");


protected function onFolderSelected(event:Event):void
{

    var targetFile:File = event.target as File;

    var files:Array = getFiles(targetFile);//the all files inthe folder

}

private function getFiles(file:File):Array
{
    var files:Array = [];

    if (file.isDirectory)
    {
        var temp:Array = file.getDirectoryListing();

        for each (var tFile:File in temp)
        {
            files = files.concat(getFiles(tFile));
        }
    }
    else
    {
        files.push(file);
    }

    return files;
}

检查递归函数注意:在构造递归函数时要小心。很容易陷入无限函数循环并导致堆栈溢出错误。不过,这个函数似乎写得很好。谢谢各位,我想做的是制作一个treeview类型的东西。知道一些库或代码吗?不想在flex中实现,而想留在flash as3中