O conteúdo de um array frequentemente precisará ser alterado, como quando é necessário remover um item do inventário de um jogador. Luau possui funções embutidas para uso com tabelas para facilitar isso.
Este artigo irá delinear funções pré-construídas para tabelas, como adicionar e remover, enquanto descreve como procurar um valor.
Para aplicar essas habilidades, você criará um script que ajuda a gerenciar o inventário de um jogador.

Adicionar valores a arrays
Para adicionar um novo valor a um array, use table.insert(array, valueToInsert). O segundo parâmetro pode ser qualquer valor, como uma string, número ou objeto inteiro, como Player ou IntValue.
Para praticar, você criará um script que armazena itens de jogadores em uma tabela e, em seguida, adiciona a ela. Como este exemplo é apenas um script, pode ser usado com qualquer arquivo ou projeto. O teste do código será feito usando a janela de Saída.
Crie um array vazio chamado playerItems.
playerItems = {}Adicione itens de inventário ao array digitando table.insert(). Nos parênteses, digite playerItems, a tabela à qual você deseja adicionar, seguido por uma string para cada item. Insira pelo menos três valores.
playerItems = {}table.insert(playerItems, "Poção")table.insert(playerItems, "Pão")table.insert(playerItems, "Saco de Cama")print(playerItems)Execute o projeto. Na Saída, expanda os três pontos ... para ver a tabela impressa.
Remover valores de arrays
Para remover um valor, como se um jogador usasse um item ou alguém em uma lista de jogadores ativos deixasse uma experiência, use table.remove(). Dependendo dos parâmetros fornecidos, a função pode remover o último valor de uma tabela ou em um índice específico.
Remover o último valor
Às vezes, um script precisa remover um item específico. Por exemplo, remover o primeiro item do inventário de um jogador, ou escolher o primeiro jogador de uma lista. Para remover o último valor em um array, use table.remove(arrayName). Neste caso, o único parâmetro necessário é a tabela em si.
Use o array de itens do exemplo anterior. Em seguida, para remover o último valor da tabela, neste caso, "Saco de Cama", digite table.remove(playerItems)
playerItems = {}table.insert(playerItems, "Poção")table.insert(playerItems, "Pão")table.insert(playerItems, "Saco de Cama")table.remove(playerItems)print(playerItems)Execute o projeto. Na janela de Saída, o último valor, "Saco de Cama", não deve ser impresso.
Remover por índice
Para remover um valor em um ponto específico do array, insira no segundo parâmetro o índice a ser removido, como table.remove(arrayName, 1).
Usando a mesma tabela, digite table.remove(). Nos parâmetros, insira o nome da tabela e 1, o valor a ser removido.
playerItems = {}table.insert(playerItems, "Poção")table.insert(playerItems, "Pão")table.insert(playerItems, "Saco de Cama")table.remove(playerItems, 1)Execute o projeto. Verifique se o primeiro valor, "Poção", foi removido.
Procurar valores em um array
Para encontrar valores específicos em arrays, como o nome de um jogador vencedor, use a função table.find(). Alternativamente, você pode codificar sua própria função de busca usando loops for e declarações if.
Encontrar e retornar um único valor
Para encontrar um valor em um array, crie uma função chamada findValue() que percorre um array e para na primeira vez que encontra um valor correspondente.
Uma vez que encontre o valor, a função usará a palavra-chave return para retornar o índice desse valor. Com um índice, você pode removê-lo do array.
Copie o array chamado playerItems abaixo.
local playerItems = {"Poção","Pão","Pão","Saco de Cama"}Codifique uma nova função chamada findValue() com dois parâmetros:
whichArray - o array a ser pesquisado.
itemName - a string específica a ser verificada.
local function findValue(whichArray, itemName)end
Em findValue(), use um loop for para verificar se algum valor no array corresponde a itemName. Se o valor corresponder, use a palavra-chave return para retornar o valor encontrado em currentIndex.
local function findValue(whichArray, itemName)for currentIndex = 1, #whichArray doif whichArray[currentIndex] == itemName thenreturn currentIndexendendendTeste a função de pesquisa criando uma variável chamada valueFound e chamando findValue(). Passe o array a ser pesquisado e qual valor deve ser pesquisado. Execute o código para confirmar que a saída esperada é o índice 2.
local function findValue(whichArray, itemName)for currentIndex = 1, #whichArray doif whichArray[currentIndex] == itemName then--Retorna o valor de currentIndexreturn currentIndexendendendlocal valueFound = findValue(playerItems, "Pão")print("O valor está no índice " .. valueFound)
Remover um valor
Se um valor foi encontrado usando a função de busca, ele pode ser removido. Verifique se um valor foi encontrado com uma declaração if.
Verifique se um valor está dentro de valueFound; se sim, remova o valor usando table.remove().
if valueFound thentable.remove(playerItems, valueFound)endImprima o array usando o código abaixo.
for index = 1, #playerItems dolocal itemString = playerItems[index]print("Índice " .. index .. ": " .. itemString)endTeste e verifique se o primeiro valor "Pão" foi removido do array. Tente remover outros valores alterando o segundo parâmetro em findValue().
Observe que, como essa função foi chamada uma vez, apenas a primeira instância de "Pão" foi removida. A seção seguinte abordará como encontrar e remover todas as instâncias.
Encontrar e remover todas as ocorrências de um valor específico
Embora o código anterior só pudesse remover a primeira instância de um valor encontrado, este trecho de código encontrará e removerá todas as ocorrências de um array. Por exemplo, se um jogador quisesse vender todo o seu pão em uma loja do jogo.
Use um array chamado playerItems com pelo menos quatro valores e um conjunto de duplicatas.
local playerItems = {"Poção","Pão","Pão","Saco de Cama"}Para percorrer o array, crie um loop for que vai para trás através de playerItems, começando em #playerItems, terminando em 1, e incrementando por -1.
for index = #playerItems, 1, -1 doendNo loop, use uma declaração if para verificar se o valor dentro de playerItems[index] é igual a "Pão" e, se sim, remova o item.
for index = #playerItems, 1, -1 doif playerItems[index] == "Pão" thentable.remove(playerItems, index)endendUse o código abaixo para adicionar um segundo loop for que imprime o array.
for index = 1, #playerItems dolocal itemString = playerItems[index]print("Índice " .. index .. ": " .. itemString)endExecute o script e verifique se todos os valores chamados "Pão" foram removidos.
Resumo
Valores podem ser removidos ou adicionados a um array, mas tenha cuidado com os índices que mudam ao fazer isso. Use loops para iterar através de uma tabela para remover todas as instâncias de um valor ou apenas a primeira instância encontrada.
A palavra-chave return pode ser usada para parar um loop e enviar informações de volta onde necessário.
Uma versão final do script pode ser referenciada abaixo.
O projeto a seguir inclui todos os scripts deste tutorial. Baixe aqui.
Observe que todos os scripts estão no ServerScriptService e desativados. Para usar um script, nas suas propriedades, desmarque o campo Desativado e execute o Studio.