Apportare modifiche agli array

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

Il contenuto di un array deve spesso essere modificato, ad esempio quando è necessario rimuovere un oggetto dall'inventario di un giocatore. Luau ha funzioni integrate da utilizzare con le tabelle per semplificare questo processo.

Questo articolo descriverà le funzioni predefinite per le tabelle come aggiungere e rimuovere, mentre descrive 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, usa 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 e poi li aggiunge. Poiché questo esempio è solo uno script, può essere utilizzato con qualsiasi file o progetto. Il codice sarà testato utilizzando la finestra di Output.

  1. Crea un array vuoto chiamato playerItems.

    playerItems = {}
  2. Aggiungi oggetti dell'inventario all'array digitando table.insert(). Nei parentesi, digita playerItems, la tabella a cui aggiungere, seguita da una stringa per ogni 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 punti ... per vedere la tabella stampata.

Rimuovere valori dagli array

Per rimuovere un valore, come se un giocatore avesse usato un oggetto o qualcuno in un elenco di giocatori attivi lascia un gioco, usa table.remove(). A seconda dei parametri forniti, la funzione può rimuovere l'ultimo valore di una tabella o un valore a un indice specifico.

Rimuovere l'ultimo valore

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

  1. Usa 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 stampare.

Rimuovere per indice

Per rimuovere un valore in un punto specifico dell'array, inserisci nel 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, usa la funzione table.find(). In alternativa, puoi codificare 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 attraversa un array e si ferma la prima volta che trova un valore corrispondente.

Una volta trovato 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(), usa un ciclo for per controllare se qualche valore nell'array corrisponde a itemName. Se il valore corrisponde, usa 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 dovrebbe 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 è stato trovato con un'istruzione if.

  1. Controlla se un valore è dentro valueFound; in tal caso, rimuovi il valore utilizzando table.remove().

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

    for index = 1, #playerItems do
    local itemString = playerItems[index]
    print("Indice " .. index .. ": " .. itemString)
    end
  3. Fai un test di gioco 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 una sola volta, solo la prima istanza di "Pane" è stata rimossa. La sezione seguente 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 suo 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 attraversare l'array, crea un ciclo for che vada all'indietro attraverso playerItems, partendo da #playerItems, terminando a 1 e incrementando di -1.

    for index = #playerItems, 1, -1 do
    end
  3. Nel ciclo, usa un'istruzione if per controllare se il valore all'interno di playerItems[index] è uguale a "Pane", e in tal caso, 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 agli indici che si spostano durante questo processo. Usa i cicli per iterare attraverso una tabella per rimuovere tutte le istanze di un valore, o solo la prima istanza trovata.

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

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

Il seguente progetto include tutti gli script di 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.