Faire des modifications dans les tableaux

*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.

Le contenu d'un matricedevra souvent être modifié, comme lorsqu'il faut retirer un article de l'inventaire d'un joueur.Luau a fonctions intégrées pour l'utilisation avec des tables afin de rendre cela plus facile.

Cet article décrit les fonctions préconstruites pour les tables comme ajouter et enlever tout en décrivant comment rechercher une valeur.

Pour appliquer ces compétences, vous créerez un script qui aide à gérer l'inventaire d'un joueur dans un jeu.

Ajouter des valeurs aux tableaux

Pour ajouter une nouvelle valeur à un matrice, 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 créerez un script qui stocke les articles du joueur dans une table, puis ajouterez-y.Puisque cet exemple est juste un script, il peut être utilisé avec n'importe quel fichier ou projet.Le test du code sera effectué en utilisant la fenêtre de sortie.

  1. Créez un tableau vide nommé playerItems.


    playerItems = {}
  2. Ajoutez des articles d'inventaire à l'array en tapant table.insert().Dans la parenthèse, tapez playerItems , la table à ajouter, suivie d'une chaîne pour chaque item.Insérez au moins trois valeurs.


    playerItems = {}
    table.insert(playerItems, "Potion")
    table.insert(playerItems, "Bread")
    table.insert(playerItems, "Sleeping Bag")
    print(playerItems)
  3. Exécutez le projet. Dans la sortie, élargissez les trois points ... pour voir la table imprimée.

Supprimer les valeurs des tableaux

Pour supprimer une valeur, comme si un joueur utilisait un article ou que quelqu'un dans une liste de joueurs actifs quitte une expérience, utilisez table.remove() .En fonction des 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 itemspécifique.Par instance, enlever le premier article dans l'inventaire d'un joueur ou choisir le premier joueur dans une liste.Pour supprimer la dernière valeur dans un matrice, utilisez table.remove(arrayName) .Dans ce cas d'utilisation, le seul paramètre nécessaire est la table elle-même.

  1. Utilisez l'ensemble d'éléments de l'exemple précédent. Ensuite, pour supprimer la dernière valeur de la table, dans ce cas "Sleeping Bag" , tapez table.remove(playerItems)


    playerItems = {}
    table.insert(playerItems, "Potion")
    table.insert(playerItems, "Bread")
    table.insert(playerItems, "Sleeping bag")
    table.remove(playerItems)
    print(playerItems)
  2. Exécutez le projet. Dans la fenêtre de sortie, la dernière valeur, "Sleeping Bag", ne devrait pas imprimer.

Supprimer par index

Pour supprimer une valeur à un point spécifique de l'matrice, entrez le deuxième paramètre l'index à retirer, comme table.remove(arrayName, 1) .

  1. En utilisant la même table, tapez table.remove() . Dans les paramètres, saisissez le nom de la table et 1 , la valeur à retirer.


    playerItems = {}
    table.insert(playerItems, "Potion")
    table.insert(playerItems, "Bread")
    table.insert(playerItems, "Sleeping bag")
    table.remove(playerItems, 1)
  2. Exécutez le projet. Vérifiez que la première valeur, « Potion » a été supprimée.

Rechercher des valeurs dans un matrice

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 matrice, 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'il a trouvé la valeur, la fonction utilisera le mot-clé return pour retourner l'index de cette valeur. Avec un index, vous pouvez le supprimer de l'matrice.

  1. Copiez l'array nommé playerItems ci-dessous.


    local playerItems = {
    "Potion",
    "Bread",
    "Bread",
    "Sleeping Bag"
    }
  2. Codez une nouvelle fonction nommée findValue() avec deux paramètres :

    • whichArray - l'array à travers lequel rechercher.

    • itemName - la chaîne spécifique à vérifier.


      local function findValue(whichArray, itemName)
      end
  3. Dans findValue() , utilisez une boucle for pour vérifier si une valeur dans l'array 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 do
    if whichArray[currentIndex] == itemName then
    return currentIndex
    end
    end
    end
  4. Testez la fonction de recherche en créant une variable nommée valueFound et en appelant findValue().Passez l'array à rechercher, et la valeur qu'il doit rechercher. Exécutez le code pour confirmer que la sortie attendue est l'index 2.


    local function findValue(whichArray, itemName)
    for currentIndex = 1, #whichArray do
    if whichArray[currentIndex] == itemName then
    --Renvoie la valeur de l'index retour
    return currentIndex
    end
    end
    end
    local valueFound = findValue(playerItems, "Bread")
    print("The value is at 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.

  1. Vérifiez si une valeur est dans valueFound ; si oui, supprimez la valeur en utilisant table.remove() .


    if valueFound then
    table.remove(playerItems, valueFound)
    end
  2. Imprimez l'array en utilisant le code ci-dessous.


    for index = 1, #playerItems do
    local itemString = playerItems[index]
    print("Index " .. index .. ": " .. itemString)
    end
  3. Testez et vérifiez que la première valeur "Bread" a été supprimée de l'matrice.Essayez de supprimer d'autres valeurs en modifiant le deuxième paramètre dans findValue() .

    Remarquez que comme cette fonction a été appelée une fois, seule la première instance de "Bread" a été supprimée.La section suivante couvrira la façon de trouver et de supprimer toutes les instances.

Trouver et supprimer toute une valeur spécifique

Bien que le code précédent ne puisse supprimer que la première instance d'une valeur trouvée, ce fragment de code trouvera et supprimera toutes les occurrences d'un matrice.Par exemple, si, disons, un joueur voulait vendre tout son pain dans un boutiqueen jeu.

  1. Utilisez un tableau nommé playerItems avec au moins quatre valeurs et un ensemble de duplicates .


    local playerItems = {
    "Potion",
    "Bread",
    "Bread",
    "Sleeping Bag"
    }
  2. Pour parcourir l'matrice, créez une boucle while qui va en arrière à travers playerItems, commençant à #playerItems et se terminant à 1, et augmentant de -1.


    for index = #playerItems, 1, -1 do
    end
  3. Dans la boucle, utilisez une déclaration if pour vérifier si la valeur à l'intérieur de playerItems[index] est égale à "Bread" et, si oui, supprimez l'item.


    for index = #playerItems, 1, -1 do
    if playerItems[index] == "Bread" then
    table.remove(playerItems, index)
    end
    end
  4. Utilisez le code ci-dessous pour ajouter une deuxième boucle qui imprime l'matrice.


    for index = 1, #playerItems do
    local itemString = playerItems[index]
    print("Index " .. index .. ": " .. itemString)
    end
  5. Exécutez le script et vérifiez que toutes les valeurs nommées « pain » sont supprimées.

Sommaire

Les valeurs peuvent être supprimées ou ajoutées à un matrice, mais faites attention aux index qui se déplacent en le faisant.Utilisez des boucles pour itérer sur une table pour supprimer toutes les instances d'une valeur, ou simplement la première instance trouvée.

Le mot-clé return peut être utilisé pour arrêter une boucle et envoyer 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 inclut tous les scripts dans ce tutoriel. Téléchargez ici .

Remarquez que tous les scripts sont dans ServerScriptService et désactivés .Pour utiliser un script, dans ses propriétés, désactivez le champ Désactivé et exécutez Studio.