Sortieren einer Lua-Tabelle von Schlüssel
Ich habe schon viele Fragen und Google-Ergebnisse, konnte aber keine Lösung finden.
Ich versuche, mich zu Sortieren Sie eine Tabelle mit table.sort
Funktion in Lua, aber ich kann nicht herausfinden, wie es zu benutzen.
Ich habe eine Tabelle, die Schlüssel als zufällige numerische Werte. Ich möchte, um Sie zu Sortieren in aufsteigender Reihenfolge. Ich habe gegangen durch die Lua-wiki-Seite auch, aber table.sort
funktioniert nur mit die Werte in der Tabelle.
t = { [223]="asd", [23]="fgh", [543]="hjk", [7]="qwe" }
Ich es will:
t = { [7]="qwe", [23]="fgh", [223]="asd", [543]="hjk" }
- Was für ein problem du eigentlich zu lösen versucht?
- Der code, den Sie gab, ist nicht korrekt Lua code...
- ja, ich schrieb es falsch ist sorry für die Unannehmlichkeiten.
- Verwechseln Sie nicht eine Tabelle Konstruktor (das ist eine geordnete Liste von Werten, mit optionalen Tasten)—ein source-code-Konzept—mit einem aktuellen Tabelle einen run-time-Daten-Struktur. Die Reihenfolge in der Tabelle Konstruktor ist nur relevant für die Zuordnung der impliziten Schlüssel.
- Zurück zu "Was für ein problem du eigentlich zu lösen versucht?" Sie scheinen zu wollen, zu speichern oder zu verwenden, mehr Informationen/Struktur, als Sie in Ihrem code. Bitte erklären Sie das Ziel. Es könnte sein, dass Sie wollen, dass ein iterator. Es könnte sein, dass Sie wollen eine andere Tabellenstruktur. ....
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie festlegen, in welcher Reihenfolge die Elemente werden aus der hash (das ist, was Ihre Tabelle ist) mit
pairs
. Sie benötigen, um die Schlüssel aus dieser Tabelle, Sortieren Sie die Tasten als eigene Tabelle und verwenden dann die sortierten Schlüssel zum abrufen der Werte aus der original-Tabelle:Druckt
Eine andere option wäre, einen eigenen iterator statt
pairs
zum Durchlaufen der Tabelle in der Reihenfolge, die Sie brauchen, aber die Sortierung der Schlüssel einfach genug für Ihre Bedürfnisse.Was gesagt wurde von @lhf ist wahr, Eure lua-Tabelle enthält dessen Inhalt in welcher Reihenfolge die Umsetzung findet durchführbar. Jedoch, wenn Sie drucken möchten (oder Durchlaufen) in einer geordneten Art und Weise, ist es möglich (so können Sie vergleichen Sie es mit den Elementen). Um dies zu erreichen, können Sie es auf folgende Weise
Leider orderedPairs nicht als Teil des lua, können Sie kopieren die Umsetzung von hier obwohl.
Es gibt keine Vorstellung von der Reihenfolge, in der Lua-Tabellen: Sie sind einfach nur Sätze von Schlüssel-Wert-Paaren.
Den beiden nachfolgenden Tabellen haben genau den gleichen Inhalt, denn Sie enthalten genau die gleichen Paare: