2008-12-02 8 views
1

J'ai une collection de tableaux avec n'importe quel nombre d'objets. Je sais que chaque objet a une propriété donnée. Existe-t-il un moyen facile (appelé "built-in") d'obtenir un tableau de toutes les valeurs de cette propriété dans la collection?Quel est le moyen le plus facile/le meilleur d'obtenir un tableau de valeurs à partir d'une collection de tableaux?

Par exemple, disons que j'ai la collection:

var myArrayCollection:ArrayCollection = new ArrayCollection(
    {id: 1, name: "a"} 
    {id: 2, name: "b"} 
    {id: 3, name: "c"} 
    {id: 4, name: "d"} 
    .... 
); 

Je veux obtenir le tableau "1,2,3,4 ....". En ce moment, je dois parcourir la collection et pousser chaque valeur vers un tableau. Puisque ma collection peut devenir grande, je veux éviter de faire une boucle.

var myArray:Array /* of int */ = []; 

for each (var item:Object in myArrayCollection) 
{ 
    myArray.push(item.id); 
} 

Quelqu'un a-t-il des suggestions?

Merci.

Répondre

2

Une fois que vous obtenez l'objet Array sous-jacente de la ArrayCollection en utilisant la propriété source, vous pouvez utiliser la méthode map sur la Array.

Votre code ressemblera à ceci:

private function getElementIdArray():Array 
{ 
    var arr:Array = myArrayCollection.source; 
    var ids:Array = arr.map(getElementId); 
    return ids; 
} 

private function getElementId(element:*, index:int, arr:Array):int 
{ 
    return element.id; 
} 
+0

C'est exactement ce que je cherchais. Merci beaucoup! –

+1

Cela n'empêche pas de boucler, évite juste d'écrire la boucle. – tvanfosson

2

Selon le docs, ArrayCollection ne conserve pas les clés séparément des valeurs. Ils sont stockés en tant qu'objets dans un tableau sous-jacent. Je ne pense pas qu'il existe un moyen d'éviter de les boucler pour extraire uniquement les clés puisque vous devez regarder chaque objet dans le tableau sous-jacent.

+0

Il est vrai que chaque objet doit être examiné, une boucle explicite n'est pas nécessaire. La classe Array offre des méthodes pratiques pour aider les situations de ce type. –

+0

La boucle a juste un auteur différent. Néanmoins, il est préférable d'utiliser le mécanisme fourni par le cadre en l'absence d'une autre raison. – tvanfosson

Questions connexes