Le contenu d'un tableau devra souvent être modifié, par exemple lorsqu'il faut retirer un élément de l'inventaire d'un joueur. Luau dispose de fonctions intégrées à utiliser avec des tables pour faciliter cela.
Cet article décrira les fonctions préconstruites pour les tables comme ajouter et supprimer tout en décrivant comment rechercher une valeur.
Pour appliquer ces compétences, vous allez créer un script qui aide à gérer l'inventaire d'un joueur.

Ajouter des valeurs aux tableaux
Pour ajouter une nouvelle valeur à un tableau, utilisez table.insert(array, valueToInsert). Le deuxième paramètre peut être n'importe quelle valeur telle qu'une chaîne, un nombre ou un objet entier, comme Player ou IntValue.
Pour pratiquer, vous allez créer un script qui stocke les objets du joueur dans une table, puis y ajouter des éléments. Comme cet exemple est juste un script, il peut être utilisé avec n'importe quel fichier ou projet. Le test du code se fera en utilisant la fenêtre de sortie.
Créez un tableau vide nommé playerItems.
playerItems = {}Ajoutez des objets d'inventaire au tableau en tapant table.insert(). Dans les parenthèses, tapez playerItems, la table à laquelle ajouter, suivie d'une chaîne pour chaque élément. Insérez au moins trois valeurs.
playerItems = {}table.insert(playerItems, "Potion")table.insert(playerItems, "Pain")table.insert(playerItems, "Sac de couchage")print(playerItems)Exécutez le projet. Dans la sortie, développez les trois points ... pour voir la table imprimée.
Supprimer des valeurs des tableaux
Pour supprimer une valeur, comme si un joueur utilisait un objet ou qu'une personne dans une liste de joueurs actifs quittait un jeu, utilisez table.remove(). Selon les paramètres fournis, la fonction peut soit supprimer la dernière valeur d'une table, soit à un index spécifique.
Supprimer la dernière valeur
Parfois, un script doit supprimer un élément spécifique. Par exemple, supprimer le premier élément de l'inventaire d'un joueur, ou choisir le premier joueur dans une liste. Pour supprimer la dernière valeur d'un tableau, utilisez table.remove(arrayName). Dans ce cas, le seul paramètre nécessaire est la table elle-même.
Utilisez le tableau d'objets de l'exemple précédent. Ensuite, pour supprimer la dernière valeur de la table, dans ce cas "Sac de couchage", tapez table.remove(playerItems)
playerItems = {}table.insert(playerItems, "Potion")table.insert(playerItems, "Pain")table.insert(playerItems, "Sac de couchage")table.remove(playerItems)print(playerItems)Exécutez le projet. Dans la fenêtre de sortie, la dernière valeur, "Sac de couchage", ne devrait pas s'imprimer.
Supprimer par index
Pour supprimer une valeur à un point spécifique dans le tableau, entrez dans le deuxième paramètre l'index à supprimer, comme table.remove(arrayName, 1).
En utilisant la même table, tapez table.remove(). Dans les paramètres, entrez le nom de la table et 1, la valeur à supprimer.
playerItems = {}table.insert(playerItems, "Potion")table.insert(playerItems, "Pain")table.insert(playerItems, "Sac de couchage")table.remove(playerItems, 1)Exécutez le projet. Vérifiez que la première valeur, "Potion", a été supprimée.
Rechercher des valeurs dans un tableau
Pour trouver des valeurs spécifiques dans des tableaux, comme le nom d'un joueur gagnant, utilisez la fonction table.find(). Alternativement, vous pouvez coder votre propre fonction de recherche en utilisant des boucles for et des instructions if.
Trouver et retourner une seule valeur
Pour trouver une valeur dans un tableau, créez une fonction nommée findValue() qui parcourt un tableau et s'arrête la première fois qu'elle trouve une valeur correspondante.
Une fois qu'elle trouve la valeur, la fonction utilisera le mot-clé return pour retourner l'index de cette valeur. Avec un index, vous pouvez la supprimer du tableau.
Copiez le tableau nommé playerItems ci-dessous.
local playerItems = {"Potion","Pain","Pain","Sac de couchage"}Codez une nouvelle fonction nommée findValue() avec deux paramètres :
whichArray - le tableau à parcourir.
itemName - la chaîne spécifique à vérifier.
local function findValue(whichArray, itemName)end
Dans findValue(), utilisez une boucle for pour vérifier si une valeur dans le tableau correspond à itemName. Si la valeur correspond, utilisez le mot-clé return pour retourner la valeur trouvée dans currentIndex.
local function findValue(whichArray, itemName)for currentIndex = 1, #whichArray doif whichArray[currentIndex] == itemName thenreturn currentIndexendendendTestez la fonction de recherche en créant une variable nommée valueFound et en appelant findValue(). Passez le tableau à rechercher et la valeur à rechercher. Exécutez le code pour confirmer que la sortie attendue est l'index 2.
local function findValue(whichArray, itemName)for currentIndex = 1, #whichArray doif whichArray[currentIndex] == itemName then--Renvoie la valeur de currentIndexreturn currentIndexendendendlocal valueFound = findValue(playerItems, "Pain")print("La valeur est à l'index " .. valueFound)
Supprimer une valeur
Si une valeur a été trouvée à l'aide de la fonction de recherche, elle peut être supprimée. Vérifiez si une valeur a été trouvée avec une instruction if.
Vérifiez si une valeur est dans valueFound; si oui, supprimez la valeur en utilisant table.remove().
if valueFound thentable.remove(playerItems, valueFound)endImprimez le tableau en utilisant le code ci-dessous.
for index = 1, #playerItems dolocal itemString = playerItems[index]print("Index " .. index .. ": " .. itemString)endTestez et vérifiez que la première valeur "Pain" a été supprimée du tableau. Essayez de supprimer d'autres valeurs en changeant le deuxième paramètre dans findValue().
Remarquez qu'étant donné que cette fonction a été appelée une fois, seule la première instance de "Pain" a été supprimée. La section suivante couvrira comment trouver et supprimer toutes les instances.
Trouver et supprimer toutes les occurrences d'une valeur spécifique
Alors que le code précédent ne pouvait supprimer que la première instance d'une valeur trouvée, ce code va trouver et supprimer toutes les occurrences d'un tableau. Par exemple, si un joueur voulait vendre tout son pain dans un magasin du jeu.
Utilisez un tableau nommé playerItems avec au moins quatre valeurs et un ensemble de doublons.
local playerItems = {"Potion","Pain","Pain","Sac de couchage"}Pour parcourir le tableau, créez une boucle for qui va en arrière à travers playerItems, en commençant à #playerItems, en terminant à 1, et en incrémentant de -1.
for index = #playerItems, 1, -1 doendDans la boucle, utilisez une instruction if pour vérifier si la valeur à l'intérieur de playerItems[index] est égale à "Pain", et si oui, supprimez l'élément.
for index = #playerItems, 1, -1 doif playerItems[index] == "Pain" thentable.remove(playerItems, index)endendUtilisez le code ci-dessous pour ajouter une deuxième boucle for qui imprime le tableau.
for index = 1, #playerItems dolocal itemString = playerItems[index]print("Index " .. index .. ": " .. itemString)endExécutez le script et vérifiez que toutes les valeurs nommées "Pain" ont été supprimées.
Résumé
Des valeurs peuvent être supprimées ou ajoutées à un tableau, mais faites attention aux décalages d'index lors de cette opération. Utilisez des boucles pour parcourir une table afin de supprimer toutes les instances d'une valeur, ou juste la première instance trouvée.
Le mot-clé return peut être utilisé pour arrêter une boucle et renvoyer des informations là où c'est nécessaire.
Une version terminée du script peut être référencée ci-dessous.
Le projet suivant comprend tous les scripts de ce tutoriel. Téléchargez ici.
Notez que tous les scripts sont dans ServerScriptService et désactivés. Pour utiliser un script, dans ses propriétés, décochez le champ Désactivé et exécutez Studio.