est-il possible d'obtenir la profondeur de l'objet dans ArrayCollection?La profondeur de l'objet dans ArrayCollection
Répondre
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;
}
De l'livedocs:
// Get the index of the item with the value ME.
var addedItemIndex:int=myAC.getItemIndex("ME");
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;
}
J'espérais, qu'il existe déjà une telle fonction. Merci – luccio
Un critique de Flex que j'ai entendu est que; Flex n'a pas de bonnes classes de collection. : - / –
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