Forums Développement Multimédia

Les formations Mediabox
Les formations Mediabox

Différentes manières de parcourir un tableau

Compatible ActionScript 3. Cliquer pour en savoir plus sur les compatibilités.Compatible ActionScript 2. Cliquer pour en savoir plus sur les compatibilités.Par ITERATIF (Olivier Bugalotto)

Nous connaissons tous l'instruction for (boucle) qui nous permet de parcourir le contenu d'un tableau à l'aide d'une variable compteur et d'une condition :

var prenoms:Array = ["Eric","Stéphane","Paul","Sylvain"];
for(var i = 0; i < prenoms.length; i++) {
	trace(prenoms[i]);
}

panneau de sortie :

Eric
Stéphane
Paul
Sylvain

Ou encore l'instruction for..in qui s'occupe de parcourir un tableau en nous fournissant a chaque passage la position actuelle dans le tableau mais attention en AS2, cette instruction parcourt le tableau a l'envers :

for(var index in prenoms) {
	trace(prenoms[index]);
}

Elle permet aussi de parcourir les propriétés d'un objet mais ceci est un autre sujet…

Une nouvelle instruction est arrivée avec AS3, l'instruction for each qui permet de parcourir un tableau avec l'avantage de nous fournir à chaque passage non pas une position dans le tableau mais la valeur contenu dans le tableau a cette même position :

for each(var value in prenoms) {
	trace(value);
}

trés pratique avec du XML :

var employeeXML:XML = <employees>
                    <name>Eric</name>
					<name>Stéphane</name>
					<name>Paul</name>
					<name>Sylvain</name>
                </employees>;
for each(var v:Object in employeeXML.name) {
	trace(v);
}

Nous venons de voir ici les 3 instructions nous permettant de parcourir un tableau. Mais le nouveau framework de AS3 nous apporte aussi des nouveautés.

La classe Array nous propose une méthode forEach qui nous permet de parcourir aussi le contenu d'un tableau mais d'executer à chaque passage une méthode callback que nous lui auront fourni au préalable.

Nous allons ainsi pouvoir formater la sortie en fonction du contenu :

var blogsXML:XML = <blogs>
                    <blog auteur="Eric" langage="C#" />
                    <blog auteur="Paul" langage="AS3" />
                    <blog auteur="Sylvain" langage="Java" />
                </blogs>;
var blogXMLList:XMLList = blogsXML.blog;
var blogsArray:Array = new Array();
for each (var b:XML in blogXMLList) {
	blogsArray.push(b);
}
blogsArray.sortOn("@auteur");
blogsArray.forEach(displayBlog);
 
function displayBlog(element:*, index:Number, arr:Array):void {
	trace(element.@auteur + ((element.@langage == "AS3") ? " - C'est un fou !" : ""));
}

panneau de sortie :

Eric
Paul - C'est un fou !
Sylvain

Par ITERATIF - BUGALOTTO Olivier (2006) Vous pouvez retrouver ce tutorial et des commentaires à ce sujet sur mon blog