Sobes.tech
Junior

Comment trieriez-vous un tableau de nombres?

sobes.tech IA

Réponse de l'IA

// Utilisation de la méthode sort() avec une fonction de comparaison
const numbers = [4, 2, 5, 1, 3];
numbers.sort((a, b) => a - b); // Tri croissant

// Pour trier par ordre décroissant :
// numbers.sort((a, b) => b - a);

La méthode sort() en JavaScript trie les éléments du tableau sur place. Par défaut, elle convertit les éléments en chaînes et les trie lexicographiquement. Pour trier correctement des nombres, il faut passer une fonction de comparaison à sort().

La fonction de comparaison prend deux arguments, a et b.

  • Si la fonction retourne un nombre négatif, a sera avant b.
  • Si la fonction retourne un nombre positif, b sera avant a.
  • Si la fonction retourne 0, l'ordre des éléments ne change pas.

Pour trier des nombres en ordre croissant, on utilise (a, b) => a - b. Si a est inférieur à b, le résultat est négatif, et a vient avant b. Pour trier en ordre décroissant, on utilise (a, b) => b - a. Si b est inférieur à a, le résultat est positif, et b vient avant a.

Autres méthodes (moins fréquentes pour des tableaux numériques simples, mais utiles) :

  • Méthode localeCompare() pour des chaînes avec des nombres :

    // Non recommandé pour des nombres purs, mais peut être utilisé
    // si les nombres sont représentés sous forme de chaînes et qu'il faut prendre en compte la localisation.
    const stringNumbers = ["10", "2", "1"];
    stringNumbers.sort((a, b) => a.localeCompare(b, undefined, { numeric: true }));
    // Trie comme [ "1", "2", "10" ]
    
  • Créer une copie du tableau avant de trier :

    // Si vous souhaitez conserver le tableau d'origine
    const originalNumbers = [4, 2, 5, 1, 3];
    const sortedNumbers = [...originalNumbers].sort((a, b) => a - b);
    // ou
    // const sortedNumbers = originalNumbers.slice().sort((a, b) => a - b);