Menu
Coddy logo textTech

table.sort()

Teil des Abschnitts Logic & Flow 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

Schreiben Sie eine Funktion sortScoresDescending, die eine scores-Tabelle entgegennimmt und einen formatierten String der sortierten Punktzahlen in absteigender Reihenfolge zurückgibt.

Verwenden Sie table.sort() mit einer benutzerdefinierten Vergleichsfunktion, um die Punktzahlen von der höchsten zur niedrigsten zu ordnen, und verwenden Sie dann table.concat(), um sie zu einem einzelnen String zusammenzufügen, der durch Kommas getrennt ist.

Parameter:

  • scores (table): Eine Tabellenliste, die numerische Punktzahlen enthält

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

Spickzettel

Die Funktion table.sort() ordnet Tabellenelemente an Ort und Stelle und modifiziert die ursprüngliche Tabelle:

table.sort(myTable)

Standardmäßig sortiert sie Zahlen in aufsteigender Reihenfolge und Strings alphabetisch:

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

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

Sie können eine benutzerdefinierte Vergleichsfunktion als zweites Argument angeben. Die Funktion nimmt zwei Elemente entgegen und gibt true zurück, wenn das erste vor dem zweiten stehen soll:

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}

table.sort() funktioniert nur mit Tabellen im Listenstil, die fortlaufende ganzzahlige Schlüssel beginnend bei 1 haben.

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 Logic & Flow