Menu
Coddy logo textTech

table.sort()

Fait partie de la section Logic & Flow du Journey Lua de Coddy — leçon 7 sur 54.

Lorsque vous travaillez avec des tables de type liste, vous aurez souvent besoin d'organiser les données dans un ordre spécifique. Lua fournit la fonction table.sort() pour organiser les éléments de la table en place, ce qui signifie qu'elle modifie la table originale plutôt que d'en créer une nouvelle.

La syntaxe de base est simple :

table.sort(myTable)

Par défaut, table.sort() trie les nombres par ordre croissant et les chaînes de caractères par ordre alphabétique. Voici un exemple avec une liste de scores :

local scores = {85, 42, 91, 67, 55}
table.sort(scores)
-- scores est maintenant {42, 55, 67, 85, 91}

Pour les chaînes de caractères, le tri suit l'ordre alphabétique :

local names = {"Charlie", "Alice", "Bob"}
table.sort(names)
-- names est maintenant {"Alice", "Bob", "Charlie"}

Parfois, le tri par défaut ne correspond pas à vos besoins. Vous pouvez fournir une fonction de comparaison personnalisée en tant que deuxième argument pour contrôler la manière dont les éléments sont comparés. Cette fonction prend deux éléments et renvoie true si le premier doit se trouver avant le second :

local numbers = {5, 2, 8, 1}
table.sort(numbers, function(a, b)
    return a > b  -- Trier par ordre décroissant
end)
-- numbers est maintenant {8, 5, 2, 1}

La fonction table.sort() ne fonctionne qu'avec des tables de type liste ayant des clés entières séquentielles commençant à 1. C'est un outil puissant pour organiser les données avant de les afficher ou de les traiter dans un ordre spécifique.

challenge icon

Défi

Facile

Écrivez une fonction sortScoresDescending qui prend une table scores et renvoie une chaîne formatée des scores triés par ordre décroissant.

Utilisez table.sort() avec une fonction de comparaison personnalisée pour organiser les scores du plus élevé au plus bas, puis utilisez table.concat() pour les joindre en une seule chaîne séparée par des virgules.

Paramètres :

  • scores (table) : Une table de type liste contenant des scores numériques

Retourne : Une chaîne avec les scores triés du plus élevé au plus bas, séparés par des virgules. Format : 95,87,76,54

Aide-mémoire

La fonction table.sort() organise les éléments d'un tableau sur place, modifiant ainsi le tableau original :

table.sort(myTable)

Par défaut, elle trie les nombres par ordre croissant et les chaînes de caractères par ordre alphabétique :

local scores = {85, 42, 91, 67, 55}
table.sort(scores)
-- scores is now {42, 55, 67, 85, 91}

local names = {"Charlie", "Alice", "Bob"}
table.sort(names)
-- names is now {"Alice", "Bob", "Charlie"}

Vous pouvez fournir une fonction de comparaison personnalisée en tant que second argument. La fonction prend deux éléments et renvoie true si le premier doit être placé avant le second :

local numbers = {5, 2, 8, 1}
table.sort(numbers, function(a, b)
    return a > b  -- Sort in descending order
end)
-- numbers is now {8, 5, 2, 1}

table.sort() ne fonctionne qu'avec des tableaux de type liste ayant des clés entières séquentielles commençant à 1.

Essayez vous-même

function sortScoresDescending(scores)
    -- Écrivez le code ici
end
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Logic & Flow