Skip to content

$array.sort

Description

Construit et retourne une version triée du tableau.

Il est possible de demander à la méthode de trier le tableau lui-même. Pour ce faire, il faut passer le tableau par référence plutôt que par valeur. Voir les exemples.

Syntaxe

$array.join( array [ , options ] )

Paramètres

array array
Tableau d'éléments
options map

Options de tri. Les options reconnues sont:

mode string / function

Mode de tri. Peut valoir "string" pour indiquer que l'on souhaite effectuer un tri alphabétique ou "number" pour indiquer que l'on souhaite effectuer un tri numérique.

Peut également être une fonction. Celle-ci sera alors invoquée pour chaque paire d'éléments à comparer. La fonction recevra deux paramètres (p1, p2) et devra effectuer une comparaison de ceux-ci. On s'attend à ce que la fonction retourner:

  • 0 lorsque p1 == p2
  • <0 lorsque p1 < p2 (lorsque p1 doit être placé avant p2 dans la table triée)
  • >0 lorsque p2 < p1(lorsque p1 doit être placé après p2 dans la table triée)

Le mode par défaut est "string".

order string
Valeur litérale "asc" ou "desc" indiquant l'ordre de tri (sans effet si le mode désigne une fonction). Le tri par défaut est "asc".

Retour

Retourne une version triée du tableau reçu en paramètre.

Retourne null en cas d'erreur, typiquement si on demande un tri numérique alors que le tableau contient des valeurs non numériques ou nulles.

Exemple

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
var values = [ 2, 3, 1, 10, 9 ];

$logger.info($array.sort(values));                                      // affiche [1, 10, 2, 3, 9]
$logger.info($array.sort(values, { mode: "string" }));                  // affiche [1, 10, 2, 3, 9]
$logger.info($array.sort(values, { mode: "string", order: "asc" }));    // affiche [1, 10, 2, 3, 9]
$logger.info($array.sort(values, { mode: "string", order: "desc" }));   // affiche [9, 3, 2, 10, 1]
$logger.info($array.sort(values, { mode: "number" }));                  // affiche [1, 2, 3, 9, 10]
$logger.info($array.sort(values, { mode: "number", order: "asc" }));    // affiche [1, 2, 3, 9, 10]
$logger.info($array.sort(values, { mode: "number", order: "desc" }));   // affiche [10, 9, 3, 2, 1]
$logger.info($array.sort(values, { mode: compare }));                   // affiche [1, 2, 3, 9, 10]

function compare(v1, v2) {
    return v1 - v2;
}

// exemple de passage par référence
$logger.info(values);       // affiche [2, 3, 1, 10, 9] (inchangé par rapport à la valeur initiale)
$array.sort(&values, { mode: "number" });            // le "&" indique un passage par référence
$logger.info(values);       // affiche [1, 2, 3, 9, 10]