Der Inhalt eines Arrays muss oft geändert werden, wie z. B. wenn ein Element aus dem Inventar eines Spieler:inentfernt werden muss.Luau hat integrierte Funktionen für den Einsatz mit Tabellen, um dies zu erleichtern.
Dieser Artikel gibt eine Übersicht über vorgefertigte Funktionen für Tabellen wie Hinzufügen und Entfernen und beschreibt, wie nach einem Wert gesucht wird.
Um diese Fähigkeiten anzuwenden, erstellen Sie ein Skript, das dazu beiträgt, das Inventar eines Spieler:inin einem Spiel zu verwalten.

Füge Werte zu Arrays hinzu
Um einem Array einen neuen Wert hinzuzufügen, verwende table.insert(array, valueToInsert).Der zweite Parameter kann jeden Wert wie eine String, eine Zahl oder ein ganzes Objekt sein, wie Player oder IntValue.
Um zu üben, erstellen Sie ein Skript, das Spielerartikel in einer Tabelle speichert, und fügen Sie dann hinzu.Da dieses Beispiel nur ein Skript, das. PL: die Skriptsist, kann es mit jeder Datei oder Projekt verwendet werden.Das Testen des Codes erfolgt mit dem Ausgabe-Fenster.
Erstelle ein leeres Array mit dem Namen playerItems.
playerItems = {}Füge Inventarartikel zum Array hinzu, indem du table.insert() eingibst.In der Klammer geben Sie playerItems ein, die Tabelle, die hinzugefügt werden soll, gefolgt von einer Zeichenkette für jedes Artikel.Füge mindestens drei Werte ein.
playerItems = {}table.insert(playerItems, "Potion")table.insert(playerItems, "Bread")table.insert(playerItems, "Sleeping Bag")print(playerItems)Führe das Projekt aus. In der Ausgabe erweitere die drei Punkte ... , um die gedruckte Tabelle zu sehen.
Werte aus Arrays entfernen
Um einen Wert zu entfernen, wie wenn ein Spieler ein Element verwendet oder jemand in einer Liste aktiver Spieler ein Erlebnis verlässt, verwende table.remove().Abhängig von den bereitgestellten Parametern kann die Funktion entweder den letzten Wert einer Tabelle löschen oder an einem bestimmten Index.
Entferne den letzten Wert
Manchmal muss ein Skript ein bestimmtes Artikelentfernen.Zum Instanz, das Entfernen des ersten Elements im Inventar eines Spieler:inoder das Auswählen des ersten Spielers in einer Liste.Um den letzten Wert in einem Array zu entfernen, verwende table.remove(arrayName).In diesem Anwendungsfall ist der einzige benötigte Parameter die Tabelle selbst.
Verwende die Array von Elementen aus dem vorherigen Beispiel. Dann, um den letzten Wert aus der Tabelle zu entfernen, in diesem Fall "Sleeping Bag" , gib table.remove(playerItems) ein
playerItems = {}table.insert(playerItems, "Potion")table.insert(playerItems, "Bread")table.insert(playerItems, "Sleeping bag")table.remove(playerItems)print(playerItems)Führe das Projekt aus. Im Ausgabe-Fenster sollte der letzte Wert, "Sleeping Bag", nicht gedruckt werden.
Entfernen durch Index
Um einen Wert an einem bestimmten Punkt im Array zu entfernen, geben Sie im zweiten Parameter den Index zum Entfernen ein, z. B. table.remove(arrayName, 1).
Verwenden Sie denselben Tabelle, geben Sie table.remove() ein. In den Parametern geben Sie den Namen der Tabelle und 1 ein, den Wert zum entfernen.
playerItems = {}table.insert(playerItems, "Potion")table.insert(playerItems, "Bread")table.insert(playerItems, "Sleeping bag")table.remove(playerItems, 1)Führe das Projekt aus. Überprüfe, dass der erste Wert, "Potion", entfernt wurde.
Suche nach Werten in einem Array
Um spezifische Werte in Arrays zu finden, wie den Namen eines siegreichen Spieler:in, verwende die table.find()-Funktion.Alternativ kannst du deine eigene Suchfunktion mit for Schleifen und if Statements programmieren.
Einen einzelnen Wert finden und zurückgeben
Um einen Wert in einem Array zu finden, erstelle eine Funktion namens findValue(), die durch ein Array geht und die erste Zeit stoppt, in der sie einen passenden Wert findet.
Sobald es den Wert gefunden hat, verwendet die Funktion das Schlüsselwort return, um den Index des angegebenen Werts zurückzugeben. Mit einem Index kannst du ihn aus dem Array entfernen.
Kopiere das Array mit dem Namen playerItems unten.
local playerItems = {"Potion","Bread","Bread","Sleeping Bag"}Code eine neue Funktion namens findValue() mit zwei Parametern:
whichArray - das array, durch das gesucht werden soll.
itemName - der spezifische string, auf den zu überprüfen ist.
local function findValue(whichArray, itemName)end
In findValue() verwende eine for-Schleife, um zu überprüfen, ob irgendein Wert in der Liste mit itemName übereinstimmt.Wenn der Wert übereinstimmt, verwende das Schlüsselwort return, um den Wert zurückzugeben, der in currentIndex gefunden wurde.
local function findValue(whichArray, itemName)for currentIndex = 1, #whichArray doif whichArray[currentIndex] == itemName thenreturn currentIndexendendendTeste die Suchfunktion, indem du eine Variable namens valueFound erstellst und findValue() aufrufst.Geben Sie das Array zum Suchen ein und welchen Wert es suchen soll. Führe den Code aus, um zu bestätigen, dass die erwartete Ausgabe Index 2 ist.
local function findValue(whichArray, itemName)for currentIndex = 1, #whichArray doif whichArray[currentIndex] == itemName then--Sendet den Wert von currentIndex Zurückreturn currentIndexendendendlocal valueFound = findValue(playerItems, "Bread")print("The value is at index " .. valueFound)
Wert entfernen
Wenn ein Wert mit der find-Funktion gefunden wurde, kann er entfernt werden. Überprüfe, ob ein Wert mit einer if-Anweisung gefunden wurde.
Überprüfe, ob ein Wert innerhalb von valueFound ist; wenn ja, entferne den Wert mit table.remove().
if valueFound thentable.remove(playerItems, valueFound)endDrucke das Array mit dem Code unten aus.
for index = 1, #playerItems dolocal itemString = playerItems[index]print("Index " .. index .. ": " .. itemString)endTeste und überprüfe, dass der erste "Bread" Wert aus dem Array entfernt wurde.Versuche, andere Werte zu entfernen, indem du den zweiten Parameter in findValue() änderst.
Beachten Sie, dass, da diese Funktion einmal aufgerufen wurde, nur die erste Instanz von "Bread" entfernt wurde.Der folgende Abschnitt wird abdecken, wie alle Instanzen gefunden und entfernt werden können.
Finde und entferne alle eines bestimmten Werts
Während der vorherige Code nur die erste Instanz eines gefundenen Werts entfernen konnte, wird dieses Code-Snippet alle Vorkommnisse aus einem Array finden und entfernen.Wenn zum Beispiel ein Spieler alle seine Brote in einem Storeverkaufen möchte.
Verwende ein Array mit dem Namen playerItems mit mindestens vier Werten und einer Reihe von Duplikaten .
local playerItems = {"Potion","Bread","Bread","Sleeping Bag"}Um durch das Array zu gehen, erstelle eine for-Schleife, die rückwärts geht durch playerItems, beginnend bei #playerItems, endend bei 1 und um -1 erhöht.
for index = #playerItems, 1, -1 doendVerwende im Schleifen eine if-Anweisung, um zu überprüfen, ob der Wert innerhalb von playerItems[index] gleich "Bread" ist, und wenn ja, entferne das Artikel.
for index = #playerItems, 1, -1 doif playerItems[index] == "Bread" thentable.remove(playerItems, index)endendVerwende den Code unten, um eine zweite Schleife hinzuzufügen, die den Array druckt.
for index = 1, #playerItems dolocal itemString = playerItems[index]print("Index " .. index .. ": " .. itemString)endFühren Sie das Skript aus und überprüfen Sie, dass alle Werte mit dem Namen "Bread" entfernt werden.
Übersicht
Werte können von einem Array entfernt oder hinzugefügt werden, aber achte darauf, dass sich der Indexverschiebung dabei bewegt.Verwende Schleifen, um durch eine Tabelle zu iterieren, um alle Instanzen eines Werts zu löschen oder nur die erste Instanz gefunden zu werden.
Das Schlüsselwort return kann verwendet werden, um eine Schleife zu stoppen und Informationen zurückzusenden, wo nötig.
Eine abgeschlossene Version des Skripts kann unten referenziert werden.
Das folgende Projekt enthält alle Skripte in diesem Tutorial. Herunterladen hier .
Beachten Sie, dass alle Skripte in ServerScriptService und deaktiviert sind.Um ein Skript, das. PL: die Skriptszu verwenden, in seinen Eigenschaften, deaktiviere das Feld Deaktiviert und führe Studio aus.