Flash Lite 2 |
|||
| Guide de référence du langage ActionScript Flash Lite 2.x > Classes ActionScript > Array > sortOn (méthode Array.sortOn) | |||
Trie les éléments d'un tableau selon un ou plusieurs champs du tableau. Le tableau doit être doté des caractéristiques suivantes :
Si vous transmettez plusieurs paramètres fieldName, le premier champ représente le champ de tri principal, le deuxième représente le champ de tri suivant, etc. Flash trie selon les valeurs Unicode. (ASCII est un sous-ensemble de Unicode.) Si l'un des éléments comparés ne contient pas le champ spécifié dans le paramètre fieldName, le champ est considéré comme étant undefined et les éléments sont placés de manière consécutive dans le tableau trié dans un ordre quelconque.
Par défaut, Array.sortOn() fonctionne comme décrit dans la liste suivante :
Vous pouvez utiliser le paramètre options pour remplacer le comportement de tri par défaut. Pour trier un tableau simple (par exemple, un tableau contenant un seul champ) ou pour spécifier un ordre de tri non pris en charge par le paramètre options, utilisez Array.sort().
Pour définir plusieurs indicateurs, séparez-les à l'aide de l'opérateur OR (|) au niveau du bit :
my_array.sortOn(someFieldName, Array.DESCENDING | Array.NUMERIC);
Disponibilité : ActionScript 1.0 ; Flash Lite 2.0
fieldName:Object - Une chaîne identifiant un champ à utiliser en tant que valeur de tri ou un tableau dans lequel le premier élément représente le champ de tri principal, le deuxième le champ de tri secondaire, etc.
options:Object [facultatif] - Un ou plusieurs nombres ou noms de constantes définies, séparés par l'opérateur |, (OR au niveau du bit) ce qui remplace le comportement de tri. Les valeurs suivantes sont valides pour le paramètre options :
Array.CASEINSENSITIVE ou 1Array.DESCENDING ou 2Array.UNIQUESORT ou 4Array.RETURNINDEXEDARRAY ou 8Array.NUMERIC ou 16Les conseils de code sont activés si vous utilisez le format chaîne de l'indicateur (par exemple, DESCENDING) au lieu du format numérique (2).
Array - La valeur de renvoi dépend du fait que vous transmettiez ou non des paramètres, comme décrit dans la liste suivante :
Array.UNIQUESORT pour le paramètre options et si au moins deux éléments triés ont des champs de tri identiques, Flash renvoie une valeur de 0 et ne modifie pas le tableau. Array.RETURNINDEXEDARRAY pour le paramètre options, Flash renvoie un tableau qui reflète les résultats du tri et ne modifie pas le tableau. L'exemple suivant crée un nouveau tableau et le trie selon les champs name et city. Le premier tri utilise name en tant que première valeur de tri et city en tant que deuxième valeur de tri. Le deuxième tri utilise city en tant que première valeur de tri et name en tant que deuxième valeur de tri.
var rec_array:Array = new Array();
rec_array.push({name: "john", city: "omaha", zip: 68144});
rec_array.push({name: "john", city: "kansas city", zip: 72345});
rec_array.push({name: "bob", city: "omaha", zip: 94010});
for(i=0; i<rec_array.length; i++){
trace(rec_array[i].name + ", " + rec_array[i].city);
}
// Résultats :
// john, omaha
// john, kansas city
// bob, omaha
rec_array.sortOn(["name", "city"]);
for(i=0; i<rec_array.length; i++){
trace(rec_array[i].name + ", " + rec_array[i].city);
}
// Résultats :
// bob, omaha
// john, kansas city
// john, omaha
rec_array.sortOn(["city", "name" ]);
for(i=0; i<rec_array.length; i++){
trace(rec_array[i].name + ", " + rec_array[i].city);
}
// Résultats :
// john, kansas city
// bob, omaha
// john, omaha
Le tableau d'objets ci-dessous est utilisé par les exemples suivants, qui montrent comment utiliser le paramètre options :
var my_array:Array = new Array();
my_array.push({password: "Bob", age:29});
my_array.push({password: "abcd", age:3});
my_array.push({password: "barb", age:35});
my_array.push({password: "catchy", age:4});
La réalisation d'un tri par défaut à partir du champ du mot de passe donne les résultats suivants :
my_array.sortOn("password");
// Bob
// abcd
// barb
// catchy
La réalisation d'un tri non sensible à la casse à partir du champ du mot de passe donne les résultats suivants :
my_array.sortOn("password", Array.CASEINSENSITIVE);
// abcd
// barb
// Bob
// catchy
La réalisation d'un tri décroissant non sensible à la casse à partir du champ du mot de passe donne les résultats suivants :
my_array.sortOn("password", Array.CASEINSENSITIVE | Array.DESCENDING);
// catchy
// Bob
// barb
// abcd
La réalisation d'un tri par défaut à partir du champ âge donne les résultats suivants :
my_array.sortOn("age");
// 29
// 3
// 35
// 4
La réalisation d'un tri numérique à partir du champ âge donne les résultats suivants :
my_array.sortOn("age", Array.NUMERIC);
// my_array[0].age = 3
// my_array[1].age = 4
// my_array[2].age = 29
// my_array[3].age = 35
La réalisation d'un tri numérique décroissant à partir du champ âge donne les résultats suivants :
my_array.sortOn("age", Array.DESCENDING | Array.NUMERIC);
// my_array[0].age = 35
// my_array[1].age = 29
// my_array[2].age = 4
// my_array[3].age = 3
Lorsque vous utilisez l'option de tri Array.RETURNEDINDEXARRAY, vous devez affecter la valeur renvoyée à un tableau différent. Le tableau d'origine n'est pas modifié.
var indexArray:Array = my_array.sortOn("age", Array.RETURNINDEXEDARRAY);
Opérateur | (OR) au niveau du bit, sort (méthode Array.sort)