Nous utilisons nos propres cookies ainsi que ceux de tiers pour améliorer votre expérience et analyser l'utilisation de notre site web.

Pour accepter notre utilisation des cookies, sélectionnez une option.

Daniel Orchanian
Retour

Utiliser sort en JavaScript (1)

Comprendre les bases de la méthode sort.

Utiliser sort en JavaScript (1)

Parlons un peu tableaux aujourd'hui.

— Van Gogh était un génie !
— Je parle de listes, ou arrays...
— ???
— Ce truc : [a, b, c]...
— Aaaaaaaaaah !

Maintenant que vous êtes tous réveillés, on va examiner un petit souci courant dans la vie d'un développeur : ordonner une liste avec JavaScript. Et c'est moins simple qu'il n'y paraît.

Pour bien faire le tour du problème, je vais utiliser trois tableaux/arrays/listes :

  • un tableau fruits, contenant des chaînes de caractères
  • un tableau numbers, contenant des nombres
  • un tableau users, contenant des objets clé-valeur.
const fruits = ["pêche", "pomme", "poire", "abricot"];
const numbers = [9, 3, 1000, 56, 1, 5];
const users = [
  { name: "Raoul", age: 28 },
  { name: "Bob", age: 22 },
  { name: "Alice", age: 26 },
];

Allez, place à l'article !

À la découverte de la méthode sort()

En JavaScript, on peut utiliser la méthode Array.sort() sur n'importe quel tableau de la façon suivante :

const fruits = ["pêche", "pomme", "poire", "abricot"];

fruits.sort();

console.log(fruits); // => ["abricot", "poire", "pomme", "pêche"]

Ta-daaam ! La liste est classée par ordre alphabétique.

Attention, la méthode sort() agit directement sur le tableau. Elle ne crée pas une copie de celui-ci.

Et là, vous me demanderez :

"Mais... pourquoi sortir un article si le langage fait ça de base ?"
— Un lecteur qui croit que je n'ai que ça à faire

Essayons de reproduire notre exemple avec des nombres cette fois :

const numbers = [9, 3, 1000, 56, 1, 5];

numbers.sort();

console.log(numbers); // => [1, 1000, 3, 5, 56, 9]

"Euh... keskispass ?!"

En fait, c'est assez particulier de JavaScript : la méthode sort() procède à un rangement par ordre alphabétique même avec les nombres !

"Un langage de clampins."
— Les développeurs Ruby et Python lisant des articles JavaScript en cachette

Heureusement, il existe une solution : introduire une fonction de comparaison.

Utiliser une fonction de comparaison

La méthode sort() accepte en argument une fonction de comparaison. Cette fonction utilise deux arguments, qu'on appellera a et b selon l'usage.

const numbers = [9, 3, 1000, 56, 1, 5];

// Fonction de comparaison
const compare = function (a, b) {
  return a - b;
};

numbers.sort(compare); // On utilise la fonction compare ici

console.log(numbers); // => [1, 3, 5, 9, 56, 1000]

Bien entendu, il est possible de placer la fonction directement dans sort() sans avoir à la nommer :

numbers.sort((a, b) => a - b);
console.log(numbers); // => [1, 3, 5, 9, 56, 1000]

Et si on veut les nombres en ordre décroissant, il suffit d'inverser a et b :

numbers.sort((a, b) => b - a);
console.log(numbers); // => [1000, 56, 9, 5, 3, 1]

Magique

"Trop cool ! Merci Daniel ! À la prochaine !"
— Un lecteur pressé

PAS SI VITE !

Vous ne voulez pas en savoir plus ? Et notre tableau d'objets ?

Et les lecteurs attendirent longtemps, très longtemps avant de savoir pour le tableau d'objet. Les saisons passèrent et l'attente du peuple grandissait à travers la contrée...

Non, je plaisante : la partie 2 ici (l'article était trop long, j'ai coupé au milieu).


Daniel Orchanian
N'hésitez pas à me suivre sur LinkedIn pour recevoir des notifications sur le nouveau contenu.