Eigene Sortierung mit Funktionen
Teil des Abschnitts Logik & Programmablauf der Lua-Journey von Coddy. Lektion 8 von 54.
Während table.sort() hervorragend für einfache Listen mit Zahlen oder Zeichenfolgen funktioniert, sind Daten aus der realen Welt oft komplexer. Vielleicht hast du eine Tabelle mit Spielerdatensätzen, Inventargegenständen oder Spielpunktzahlen, bei der jeder Eintrag selbst eine Tabelle mit mehreren Feldern ist.
Um diese komplexen Strukturen zu sortieren, musst du table.sort() genau mitteilen, wie zwei Einträge verglichen werden sollen. Hier werden benutzerdefinierte Vergleichsfunktionen unverzichtbar. Eine Vergleichsfunktion nimmt zwei Elemente entgegen und gibt true zurück, wenn das erste Element in der sortierten Reihenfolge vor dem zweiten stehen soll.
Hier ist ein Beispiel mit einer Tabelle von Spielerdatensätzen:
local players = {
{name = "Alice", score = 150},
{name = "Bob", score = 200},
{name = "Charlie", score = 175}
}
table.sort(players, function(a, b)
return a.score > b.score
end)Nach dem Sortieren wird die Spielertabelle nach Punktzahl in absteigender Reihenfolge geordnet, wobei Bob an erster Stelle (200), Charlie an zweiter Stelle (175) und Alice an dritter Stelle (150) steht. Die Vergleichsfunktion greift auf das Feld score jeder Spielertabelle zu, um ihre Reihenfolge zu bestimmen.
Du kannst nach jedem gewünschten Feld sortieren: Namen alphabetisch, Level numerisch oder sogar mehrere Kriterien kombinieren.
Probier es selbst
Diese Lektion enthält keine Programmieraufgabe.
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Programmablauf
1Fortgeschrittene Tabelleniteration
Iterieren mit pairs()Iterieren mit ipairs()pairs() vs. ipairs()Zusammenfassung – Charakterbogen2Weitere Funktionen der Tabellenbibliothek
table.concat()Tabellenkonstruktion & unpack()table.sort()Eigene Sortierung mit FunktionenRückblick – Highscore-TabelleÜbe selbstständig: Online-Lua-Compiler