Le contenu d'un tableau devra souvent être modifié, par exemple lorsqu'il est nécessaire de retirer un objet de l'inventaire d'un joueur. Luau dispose de fonctions intégrées pour les tables afin de faciliter cela.
Cet article décrira les fonctions préconstruites pour les tables comme ajouter et supprimer tout en expliquant 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, comme une chaîne de caractères, un nombre ou un objet entier, comme Player ou IntValue.
Pour vous entraîner, vous allez créer un script qui stocke les articles des joueurs dans une table, puis y ajouter. Comme cet exemple est juste un script, il peut être utilisé avec n'importe quel fichier ou projet. Les tests du code se feront à l'aide de la fenêtre de sortie.
Créez un tableau vide nommé playerItems.
playerItems = {}Ajoutez des articles d'inventaire au tableau en tapant table.insert(). Dans les parenthèses, tapez playerItems, la table à laquelle ajouter, suivi d'une chaîne pour chaque article. 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, par exemple si un joueur utilise un objet ou si quelqu'un dans une liste de joueurs actifs quitte une expérience, 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 article spécifique. Par exemple, supprimer le premier article 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 d'utilisation, le seul paramètre nécessaire est la table elle-même.
Utilisez le tableau d'articles de l'exemple précédent. Puis, 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'afficher.
Supprimer par index
Pour supprimer une valeur à un point spécifique du tableau, saisissez en tant que second paramètre l'index à supprimer, comme table.remove(arrayName, 1).
En utilisant la même table, tapez table.remove(). Dans les paramètres, saisissez 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 déclarations 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 renvoyer l'index de cette valeur. Avec un index, vous pouvez le supprimer du tableau.
Copiez le tableau nommé playerItems ci-dessous.
local playerItems = {"Potion","Pains","Pains","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 du tableau correspond à itemName. Si la valeur correspond, utilisez le mot-clé return pour renvoyer 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 pour laquelle elle devrait 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 en utilisant la fonction find, elle peut être supprimée. Vérifiez si une valeur a été trouvée avec une déclaration 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 modifiant le second 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
Bien que le code précédent ne puisse que supprimer la première instance d'une valeur trouvée, ce fragment de code trouvera et supprimera 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 à l'envers à travers playerItems, commençant à #playerItems, se terminant à 1, et incrémentant de -1.
for index = #playerItems, 1, -1 doendDans la boucle, utilisez une déclaration if pour vérifier si la valeur à l'intérieur de playerItems[index] est égale à "Pain" et, si c'est le cas, supprimez l'article.
for index = #playerItems, 1, -1 doif playerItems[index] == "Pain" thentable.remove(playerItems, index)endendUtilisez le code ci-dessous pour ajouter une seconde 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" sont supprimées.
Résumé
Des valeurs peuvent être retirées ou ajoutées à un tableau, mais faites attention aux décalages d'index lorsque cela se produit. 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ù cela est nécessaire.
Une version terminée du script peut être référencée ci-dessous.
Le projet suivant inclut 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.