Menu
Coddy logo textTech

table.sort()

Teil des Abschnitts Logik & Programmablauf der Lua-Journey von Coddy. Lektion 7 von 54.

Beim Arbeiten mit listenartigen Tabellen müssen Sie die Daten oft in einer bestimmten Reihenfolge organisieren. Lua bietet die Funktion table.sort() an, um Tabellenelemente an Ort und Stelle zu sortieren, was bedeutet, dass sie die ursprüngliche Tabelle ändert, anstatt eine neue zu erstellen.

Die grundlegende Syntax ist unkompliziert:

table.sort(myTable)

Standardmäßig sortiert table.sort() Zahlen in aufsteigender Reihenfolge und Zeichenfolgen alphabetisch. Hier ist ein Beispiel mit einer Liste von Punktzahlen:

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

Bei Strings erfolgt die Sortierung in alphabetischer Reihenfolge:

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

Manchmal ist die Standard-Sortierung nicht das, was Sie benötigen. Sie können eine benutzerdefinierte Vergleichsfunktion als zweites Argument übergeben, um zu steuern, wie Elemente verglichen werden. Diese Funktion nimmt zwei Elemente entgegen und gibt true zurück, wenn das erste vor dem zweiten stehen sollte:

local numbers = {5, 2, 8, 1}
table.sort(numbers, function(a, b)
    return a > b  -- In absteigender Reihenfolge sortieren
end)
-- numbers ist jetzt {8, 5, 2, 1}

Die Funktion table.sort() funktioniert nur mit Tabellen im Listenstil, die fortlaufende ganzzahlige Schlüssel beginnend bei 1 haben. Es ist ein leistungsstarkes Werkzeug zum Organisieren von Daten, bevor diese angezeigt oder in einer bestimmten Reihenfolge verarbeitet werden.

challenge icon

Aufgabe

Einfach

Schreibe eine Funktion sortScoresDescending, die eine scores-Tabelle entgegennimmt und eine formatierte Zeichenkette der absteigend sortierten Punktzahlen zurückgibt.

Verwende table.sort() mit einer benutzerdefinierten Vergleichsfunktion, um die Punktzahlen von der höchsten zur niedrigsten anzuordnen, und verwende anschließend table.concat(), um sie zu einer einzigen, durch Kommas getrennten Zeichenkette zu verbinden.

Parameter:

  • scores (Tabelle): Eine listenartige Tabelle mit numerischen Punktzahlen

Rückgabe: Eine Zeichenkette mit den von der höchsten zur niedrigsten sortierten Punktzahlen, durch Kommas getrennt. Format: 95,87,76,54

Probier es selbst

function sortScoresDescending(scores)
    -- Code hier schreiben
end
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Programmablauf

Übe selbstständig: Online-Lua-Compiler