2010-03-21 4 views

Répondre

0

voici mon code ...

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; 
    } 
0

De l'livedocs:

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

ce n'est pas la profondeur, mais l'indice ... par « profondeur » Je veux dire à quel point est que l'article niché dans ArrayCollection tree – luccio

0

Pas une réponse, je ne peux pas poster des commentaires.

De docs en direct: http://livedocs.adobe.com/flex/3/langref/mx/collections/ArrayCollection.html

La classe ArrayCollection est une enveloppe classe qui expose un tableau comme une collection qui peut être consulté et manipulés à l'aide des méthodes et propriétés du ICollectionView ou IList interfaces.

Pourquoi pensez-vous qu'un ArrayCollection a de la profondeur?

Je suppose que vous pouvez créer une ArrayCollection de sub-ArrayCollections. Si c'est le cas; alors vous pourriez écrire une fonction qui cherche dans toutes ses sous-collections Array.

EDIT: Je pense qu'il y a quelques bugs dans la fonction que vous avez suggérée. Voici une fonction que j'ai essayé:

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; 
} 
+0

J'espérais, qu'il existe déjà une telle fonction. Merci – luccio

+0

Un critique de Flex que j'ai entendu est que; Flex n'a pas de bonnes classes de collection. : - / –