Apportare modifiche agli array

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

I contenuti di un array devono spesso essere modificati, ad esempio quando è necessario rimuovere un oggetto dall'inventario di un giocatore. Luau ha funzioni integrate da utilizzare con le tabelle per semplificare questo compito.

Questo articolo descriverà funzioni predefinite per le tabelle come aggiungere e rimuovere, mentre descriverà come cercare un valore.

Per applicare queste competenze, creerai uno script che aiuta a gestire l'inventario di un giocatore.

Aggiungere valori agli array

Per aggiungere un nuovo valore a un array, utilizza table.insert(array, valueToInsert). Il secondo parametro può essere qualsiasi valore, come una stringa, un numero o un intero oggetto, come Player o IntValue.

Per esercitarti, creerai uno script che memorizza gli oggetti del giocatore in una tabella, quindi ne aggiunge alcuni. Poiché questo esempio è solo uno script, può essere utilizzato con qualsiasi file o progetto. Il codice verrà testato utilizzando la finestra di Output.

  1. Crea un array vuoto chiamato playerItems.


    playerItems = {}
  2. Aggiungi oggetti dell'inventario all'array digitando table.insert(). Tra le parentesi, digita playerItems, la tabella a cui aggiungere, seguita da una stringa per ciascun oggetto. Inserisci almeno tre valori.


    playerItems = {}
    table.insert(playerItems, "Pozione")
    table.insert(playerItems, "Pane")
    table.insert(playerItems, "Sacco a pelo")
    print(playerItems)
  3. Esegui il progetto. In Output, espandi i tre puntini ... per vedere la tabella stampata.

Rimuovere valori dagli array

Per rimuovere un valore, ad esempio se un giocatore ha usato un oggetto o qualcuno in un elenco di giocatori attivi lascia un'esperienza, utilizza table.remove(). A seconda dei parametri forniti, la funzione può rimuovere l'ultimo valore di una tabella o un valore in un indice specifico.

Rimuovere l'ultimo valore

A volte uno script deve rimuovere un oggetto specifico. Ad esempio, rimuovendo il primo oggetto nell'inventario di un giocatore, o scegliendo il primo giocatore in un elenco. Per rimuovere l'ultimo valore in un array, utilizza table.remove(arrayName). In questo caso, l'unico parametro richiesto è la tabella stessa.

  1. Utilizza l'array di oggetti dall'esempio precedente. Poi, per rimuovere l'ultimo valore dalla tabella, in questo caso "Sacco a pelo", digita table.remove(playerItems)


    playerItems = {}
    table.insert(playerItems, "Pozione")
    table.insert(playerItems, "Pane")
    table.insert(playerItems, "Sacco a pelo")
    table.remove(playerItems)
    print(playerItems)
  2. Esegui il progetto. Nella finestra di Output, l'ultimo valore, "Sacco a pelo", non dovrebbe apparire.

Rimuovere per indice

Per rimuovere un valore in un punto specifico dell'array, inserisci come secondo parametro l'indice da rimuovere, come table.remove(arrayName, 1).

  1. Utilizzando la stessa tabella, digita table.remove(). Nei parametri, inserisci il nome della tabella e 1, il valore da rimuovere.


    playerItems = {}
    table.insert(playerItems, "Pozione")
    table.insert(playerItems, "Pane")
    table.insert(playerItems, "Sacco a pelo")
    table.remove(playerItems, 1)
  2. Esegui il progetto. Controlla che il primo valore, "Pozione", sia stato rimosso.

Cercare valori in un array

Per trovare valori specifici negli array, come il nome di un giocatore vincente, utilizza la funzione table.find(). In alternativa, puoi creare la tua funzione di ricerca utilizzando cicli for e istruzioni if.

Trovare e restituire un singolo valore

Per trovare un valore in un array, crea una funzione chiamata findValue() che scorre un array e si ferma la prima volta che trova un valore corrispondente.

Quando trova il valore, la funzione utilizzerà la parola chiave return per restituire l'indice di quel valore. Con un indice, puoi rimuoverlo dall'array.

  1. Copia l'array chiamato playerItems qui sotto.


    local playerItems = {
    "Pozione",
    "Pane",
    "Pane",
    "Sacco a pelo"
    }
  2. Codifica una nuova funzione chiamata findValue() con due parametri:

    • whichArray - l'array da cercare.

    • itemName - la stringa specifica da controllare.


      local function findValue(whichArray, itemName)
      end
  3. In findValue(), utilizza un ciclo for per controllare se qualche valore nell'array corrisponde a itemName. Se il valore corrisponde, utilizza la parola chiave return per restituire il valore trovato in currentIndex.


    local function findValue(whichArray, itemName)
    for currentIndex = 1, #whichArray do
    if whichArray[currentIndex] == itemName then
    return currentIndex
    end
    end
    end
  4. Testa la funzione di ricerca creando una variabile chiamata valueFound e chiamando findValue(). Passa l'array da cercare e quale valore deve cercare. Esegui il codice per confermare che l'output atteso sia l'indice 2.


    local function findValue(whichArray, itemName)
    for currentIndex = 1, #whichArray do
    if whichArray[currentIndex] == itemName then
    --Restituisce il valore di currentIndex
    return currentIndex
    end
    end
    end
    local valueFound = findValue(playerItems, "Pane")
    print("Il valore si trova all'indice " .. valueFound)

Rimuovere un valore

Se un valore è stato trovato utilizzando la funzione di ricerca, può essere rimosso. Controlla se un valore è contenuto in valueFound; in tal caso, rimuovi il valore utilizzando table.remove().


if valueFound then
table.remove(playerItems, valueFound)
end
  1. Stampa l'array utilizzando il codice qui sotto.


    for index = 1, #playerItems do
    local itemString = playerItems[index]
    print("Indice " .. index .. ": " .. itemString)
    end
  2. Esegui il test e controlla che il primo valore "Pane" sia stato rimosso dall'array. Prova a rimuovere altri valori cambiando il secondo parametro in findValue().

    Nota che poiché questa funzione è stata chiamata solo una volta, solo la prima istanza di "Pane" è stata rimossa. La sezione successiva tratterà come trovare e rimuovere tutte le istanze.

Trovare e rimuovere tutte le istanze di un valore specifico

Mentre il codice precedente poteva rimuovere solo la prima istanza di un valore trovato, questo frammento di codice troverà e rimuoverà tutte le occorrenze da un array. Ad esempio, se un giocatore volesse vendere tutto il pane in un negozio di gioco.

  1. Usa un array chiamato playerItems con almeno quattro valori e un insieme di duplicati.


    local playerItems = {
    "Pozione",
    "Pane",
    "Pane",
    "Sacco a pelo"
    }
  2. Per scorrere l'array, crea un ciclo for che va all'indietro attraverso playerItems, partendo da #playerItems, fino a 1, e decrementando di -1.


    for index = #playerItems, 1, -1 do
    end
  3. Nel ciclo, utilizza un'istruzione if per controllare se il valore all'interno di playerItems[index] è uguale a "Pane", e se sì, rimuovi l'oggetto.


    for index = #playerItems, 1, -1 do
    if playerItems[index] == "Pane" then
    table.remove(playerItems, index)
    end
    end
  4. Usa il codice qui sotto per aggiungere un secondo ciclo for che stampa l'array.


    for index = 1, #playerItems do
    local itemString = playerItems[index]
    print("Indice " .. index .. ": " .. itemString)
    end
  5. Esegui lo script e controlla che tutti i valori chiamati "Pane" siano stati rimossi.

I valori possono essere rimossi o aggiunti a un array, ma fai attenzione al cambiamento degli indici durante questa operazione. Usa cicli per iterare attraverso una tabella per rimuovere tutte le istanze di un valore, o semplicemente la prima istanza trovata.

La parola chiave return può essere utilizzata per fermare un ciclo e inviare informazioni indietro dove necessario.

Una versione finita dello script può essere consultata qui sotto.

Il seguente progetto include tutti gli script in questo tutorial. Scarica qui.

Nota che tutti gli script si trovano in ServerScriptService e sono disabilitati. Per utilizzare uno script, nelle sue proprietà, deseleziona il campo Disabilitato e avvia Studio.

© 2026 Roblox Corporation. Roblox, il logo Roblox e Powering Imagination sono tra i nostri marchi registrati e non registrati negli Stati Uniti. e altri paesi.