ActionScript 3.0, l'essentiel sous la main Adobe Flash Accueil
Fiches
Boutique
Contact
Trier un ou plusieurs tableaux
Nous allons voir ici comment trier le contenu d'un ou plusieurs tableaux :

- Pour un tableau classique :

var monTableau:Array = new Array("b","d","a","c");

//Trier par ordre alphabétique ascendant A-Z
monTableau.sort(); // => a,b,c,d
monTableau.sort(1); // => a,b,c,d
monTableau.sort(Array.CASEINSENSITIVE); // => a,b,c,d

//Trier par ordre alphabétique descendant Z-A
monTableau.sort(2); // => d,c,b,a
monTableau.sort(Array.DESCENDING); // => d,c,b,a

//Trier par ordre d'index du tableau
monTableau.sort(8); // => b,d,a,c
monTableau.sort(Array.RETURNINDEXEDARRAY); // => b,d,a,c

//Trier par ordre numérique
var monTableau:Array = new Array(3,5,100,34,10);
monTableau.sort(16); // => 3,5,10,34,100
monTableau.sort(Array.NUMERIC); // => 3,5,10,34,100
monTableau.sort(Array.NUMERIC | Array.DESCENDING); // => 100,34,10,5,3 (ici on combine 2 paramètres de tri en les séparant d'un "|" )
//Le tri numérique, contrairement au tri alphabétique, commence le tri par la droite pour prend en compte les dixaines, les centaines, etc.
monTableau.sort(); // => 10,100,3,34,5 = se n'est pas un classement numérique, mais alphabétique.

//Trier par paramètre
var monTableau_data:Array = new Array({name:"john",code:68144},{name:"mike",code:72345},{name:"bob",code:94010});
monTableau_data.sortOn("name"); // => Tri du tableau "monTableau_data" par rapport au paramètre "name" = john:68144,mike:72345,bob:94010
monTableau_data.sortOn("name", Array.DESCENDING); // => Tri alphabétique descendant par rapport au paramètre "name"
monTableau_data.sortOn("code", Array.NUMERIC | Array.DESCENDING); // => Tri numérique descendant par rapport au paramètre "code"
monTableau_data.sortOn(["name","code"], [Array.DESCENDING, Array.NUMERIC | Array.DESCENDING]); // => Combinaison des deux tris précédant

- Pour un tableau multi-dimensionnel :

var monTableau:Array = new Array();
monTableau[0] = ["a","b","c","d","e","f","g","h","i","j"];
monTableau[1] = [9,8,7,6,5,4,3,2,1,0];

monTableau.sort(); // => a,b,c,d,e,f,g,h,i,j,9,8,7,6,5,4,3,2,1,0
monTableau[0].sort(2); // => j,i,h,g,f,e,d,c,b,a,9,8,7,6,5,4,3,2,1,0
monTableau[1].sort(16); // => a,b,c,d,e,f,g,h,i,j,0,1,2,3,4,5,6,7,8,9

Malheureusement, il n'y a pas d'équivalent en AS3 de la fonction array_multisort() en PHP. Vous pouvez trier chaque tableau indépendament les uns des autres, mais en aucun cas les trier conjointement. Vous ne concerverez donc pas les associations de valeur entre vos tableaux.

Si vous avez besoin de trier plusieurs tableaux, ou un tableau multi-dimentionnel tout en conservant l'association entre les valeurs, je vous conseille de remplir un tableau à paramètres avec les données de vos différents tableaux. Ainsi vous pourrez éffectuer des tris en gardant les associations de données entre vos tableaux.

- Avec un tableau multi-dimentionnnel :

var monTableau:Array = new Array();
monTableau[0] = ["a","b","c","d","e","f","g","h","i","j"];
monTableau[1] = [9,8,7,6,5,4,3,2,1,0];

var monTableau_trier:Array = new Array();
for(var i=0; i<monTableau[0].length; i++)
{
monTableau_trier.push({tab1:monTableau[0][i],tab2:monTableau[1][i]});
}

monTableau_trier.sortOn("tab1",Array.DESCENDING); // => j,i,h,g,f,e,d,c,b,a,0,1,2,3,4,5,6,7,8,9

- Avec plusieurs tableaux :

var monTableau1:Array = new Array("a","b","c","d","e","f","g","h","i","j");
var monTableau2:Array = new Array(9,8,7,6,5,4,3,2,1,0);

var monTableau_trier:Array = new Array();
for(var i=0; i<monTableau1[0].length; i++)
{
monTableau_trier.push({tab1:monTableau1[i],tab2:monTableau2[i]});
}

monTableau_trier.sortOn("tab1",Array.DESCENDING); // => j,i,h,g,f,e,d,c,b,a,0,1,2,3,4,5,6,7,8,9
Commentaire(s)
Aucun.