[Divers] Extension des méthodes sort() et sortOn()
Écrit par Mama | 10-09-2003

Les constantes de l'objet Array

Macromedia a étendu l'objet Array en lui ajoutant des constantes utilisées dans le cadre des méthodes de tri Array.sort() et Array.sortOn. Ces constantes sont : Array.CASEINSENSITIVE, Array.DESCENDING, Array.NUMERIC, Array.RETURNINDEXEDARRAY et Array.UNIQUESORT.

Array.CASEINSENSITIVE est utilisé pour classer des tableau en ignorant la casse de ces éléments.

Array.DESCENDING sert à classer les éléments d'un tableau en sens inverse.

Array.NUMERIC permet de classer numériquement.

Array.RETURNINDEXARRAY retourne un tableau contant la liste des index ordonnées et non la valeur des éléments.

Array.UNIQUESORT retourne false si plusieurs éléments on les mêmes valeurs (pour sort) ou si plusieurs propriété d'un tableau d'objets existent (pour sortOn) sinon retourne le tableau classé.

Extension de la méthode sort()

Pour effectuer un tri en utilisant une des constantes de l'objet Array il suffit de passer en paramètre une ou plusieurs constantes à la méthode sort à la place de la fonction de tri:

monTableau=["lundi","mardi","mercredi","jeudi","vendredi","samedi","dimanche"];
trace (monTableau.sort(Array.DESCENDING));

Quand vous voulez combiner plusieurs constantes, vous devez les séparer par l'opérateur binaire OU (c'est à dire | ) :

monTableau=["lundi","mardi","mercredi","jeudi","vendredi","samedi","dimanche"];
trace (monTableau.sort(Array.DESCENDING | Array.UNIQUESORT));

Amélioration des performances de tri

Tri inverse:

Méthode de tri pour Flash 5 et MX:

monTableau.sort().reverse();

Méthode de tri pour Flash MX 2004:

monTableau.sort(Array.DESCENDING);

Cette nouvelle approche est environ 20% plus rapide que l'ancienne.

Tri numérique:

Méthode de tri pour Flash 5 et MX:

monTableau.sort(function (p1,p2) { return p1-p2; });

Méthode de tri pour Flash MX 2004:

monTableau.sort(Array.NUMERIC);

Cette nouvelle approche est environ 20 fois plus rapide que l'ancienne.

Tri insensible à la casse:

Méthode de tri pour Flash 5 et MX:

monTableau.sort(function (p1,p2) { return p1.toLowerCase()>p2.toLowerCase(); });

Méthode de tri pour Flash MX 2004:

monTableau.sort(Array.CASEINSENSITIVE);

Cette nouvelle approche est environ 10 fois plus rapide que l'ancienne.

Extension de la méthode sortOn()

La méthode sortOn se voit également étendue avec Flash MX 2004. Tout d'abord on peut transmettre un deuxième paramètre à la méthode pour trier selon les nouvelles constantes:

monTableau=[ {a: "lundi", b: 0, c: true }, {a: "mardi", b: 1, c: false } {a: "mercredi", b: 2, c: false } {a: "jeudi", b: 3, c: true }];
monTableau.sortOn("b",Array.DESCENDING);

Autre nouveauté, vous pouvez maintenant effectuer un tri sur plusieurs propriétés ! Imaginons que vous vouliez classer en priorité sur la propriété a mais en cas de valeur identique, trier en second sur la propriété c, il vous suffit non pas de passer une chaîne en premier paramètre mais un tableau de chaînes comme le montre l'exemple suivant:

monTableau=[ {a: "lundi", b: 0, c: true }, {a: "mardi", b: 1, c: false } {a: "mercredi", b: 2, c: false } {a: "jeudi", b: 3, c: true }];
monTableau.sortOn(["a","c"], Array.DESCENDING);

Application

Voila un exemple d'application des différentes possibilités de tri et des combinaisons de tri pour sort et sortOn avec Flash MX 2004:

 

newSort.zip newSort.zip (395.62 KB)

 
Dernière mise à jour : 12-09-2006