项目在ArrayCollection中的深度

时间:2010-03-21 16:23:04

标签: flex arrays collections depth

以某种方式可以在ArrayCollection中获取项目的深度吗?

3 个答案:

答案 0 :(得分:0)

来自livedocs

// Get the index of the item with the value ME.
var addedItemIndex:int=myAC.getItemIndex("ME");

答案 1 :(得分:0)

不是答案,我无法发表评论。

来自实时文档:http://livedocs.adobe.com/flex/3/langref/mx/collections/ArrayCollection.html

  

ArrayCollection类是一个包装器   将Array公开为的类   可以访问的集合和   使用方法和操纵   ICollectionView或的属性   IList接口。

为什么你认为ArrayCollection有深度?

我猜你可以创建一个子ArrayCollections的ArrayCollection。如果是这样的话;然后你可以编写一个搜索所有子ArrayCollections的函数。

编辑:我认为您建议的功能存在一些错误。这是我尝试过的一个功能:

public function getItemNestLevel2(needle:Object, haystack:Object):Number
{
    for each (var item:Object in haystack)
    {
        if (item == needle)
            return 0;
        if (item is Array || item is ArrayCollection)
        {
            var nestLevel:int = getItemNestLevel2(needle, item);
            if (nestLevel >= 0)
                return nestLevel + 1;
        }
    }
    return -1;
}

答案 2 :(得分:0)

这是我的代码......

public function getItemNestLevel(needle:Object, haystack:Object, level:Number = 0):Number
    {
        //iterate through items
        for each (var item:Object in haystack)
        {
            if (item == needle)
            {
                return level;
            }

            //iterate through item's properties
            for each (var child:Object in item)
            {
                if (child is Array || child is ArrayCollection)
                {
                    var lvl:Number = level + 1;
                    var num:Number = getItemNestLevel(needle, child, lvl);
                    if (num >= 0)
                    {
                        return num;
                    }
                }
            }
        }
        return -1;
    }