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 integradas 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 pesquisar 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 do jogador em uma tabela e, em seguida, adiciona a ela. Como este exemplo é apenas um script, ele 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 para adicionar, seguida de 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 Dormir")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 usou um item ou alguém em uma lista de jogadores ativos saiu de um jogo, 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 no inventário de um jogador ou escolher o primeiro jogador em 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. Então, para remover o último valor da tabela, neste caso "Saco de Dormir", digite table.remove(playerItems)
playerItems = {}table.insert(playerItems, "Poção")table.insert(playerItems, "Pão")table.insert(playerItems, "Saco de Dormir")table.remove(playerItems)print(playerItems)Execute o projeto. Na janela de Saída, o último valor, "Saco de Dormir", 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 Dormir")table.remove(playerItems, 1)Execute o projeto. Verifique se o primeiro valor, "Poção", foi removido.
Pesquisar 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 pesquisa usando loops for e instruçõ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 encontra 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 Dormir"}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 instruçã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 esta 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 instâncias de um valor específico
Enquanto o código anterior só poderia 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 dentro 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 Dormir"}Para percorrer o array, crie um loop for que vá para trás através de playerItems, começando em #playerItems, terminando em 1 e incrementando de -1.
for index = #playerItems, 1, -1 doendNo loop, use uma instruçã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 se deslocam 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 seguinte projeto inclui todos os scripts deste tutorial. Baixe aqui.
Observe que todos os scripts estão em ServerScriptService e desativados. Para usar um script, nas suas propriedades, desmarque o campo Desativado e execute o Studio.