El contenido de un arreglo a menudo necesitará ser cambiado, como cuando se necesita eliminar un ítem del inventario de un jugador. Luau tiene funciones integradas para usar con tablas que facilitan esto.
Este artículo describirá funciones predefinidas para tablas como agregar y eliminar, mientras se describe cómo buscar un valor.
Para aplicar estas habilidades, crearás un script que ayude a gestionar el inventario de un jugador.

Agregar valores a arreglos
Para agregar un nuevo valor a un arreglo, utiliza table.insert(array, valueToInsert). El segundo parámetro puede ser cualquier valor, como una cadena, número o un objeto entero, como Player o IntValue.
Para practicar, crearás un script que almacene los ítems del jugador en una tabla, y luego se le agregará. Dado que este ejemplo es solo un script, se puede usar con cualquier archivo o proyecto. Las pruebas del código se realizarán utilizando la ventana de Salida.
Crea un arreglo vacío llamado playerItems.
playerItems = {}Agrega ítems de inventario al arreglo escribiendo table.insert(). En el paréntesis, escribe playerItems, la tabla a la que agregar, seguida de una cadena para cada ítem. Inserta al menos tres valores.
playerItems = {}table.insert(playerItems, "Poción")table.insert(playerItems, "Pan")table.insert(playerItems, "Saco de dormir")print(playerItems)Ejecuta el proyecto. En Salida, expande los tres puntos ... para ver la tabla impresa.
Eliminar valores de arreglos
Para eliminar un valor, como si un jugador usó un ítem o alguien en una lista de jugadores activos abandona una experiencia, utiliza table.remove(). Dependiendo de los parámetros proporcionados, la función puede eliminar ya sea el último valor de una tabla, o en un índice específico.
Eliminar el último valor
A veces, un script necesita eliminar un ítem específico. Por ejemplo, eliminar el primer ítem en el inventario de un jugador, o seleccionar el primer jugador en una lista. Para eliminar el último valor de un arreglo, usa table.remove(arrayName). En este caso, el único parámetro necesario es la tabla misma.
Usa el arreglo de ítems del ejemplo anterior. Luego, para eliminar el último valor de la tabla, en este caso "Saco de dormir", escribe table.remove(playerItems)
playerItems = {}table.insert(playerItems, "Poción")table.insert(playerItems, "Pan")table.insert(playerItems, "Saco de dormir")table.remove(playerItems)print(playerItems)Ejecuta el proyecto. En la ventana de Salida, el último valor, "Saco de dormir", no debería imprimirse.
Eliminar por índice
Para eliminar un valor en un punto específico del arreglo, ingresa en el segundo parámetro el índice a eliminar, como table.remove(arrayName, 1).
Usando la misma tabla, escribe table.remove(). En los parámetros, ingresa el nombre de la tabla y 1, el valor a eliminar.
playerItems = {}table.insert(playerItems, "Poción")table.insert(playerItems, "Pan")table.insert(playerItems, "Saco de dormir")table.remove(playerItems, 1)Ejecuta el proyecto. Verifica que el primer valor, "Poción", fue eliminado.
Buscar valores en un arreglo
Para encontrar valores específicos en arreglos, como el nombre de un jugador ganador, utiliza la función table.find(). Alternativamente, puedes codificar tu propia función de búsqueda usando bucles for y sentencias if.
Encontrar y devolver un único valor
Para encontrar un valor en un arreglo, crea una función llamada findValue() que recorra un arreglo y se detenga la primera vez que encuentre un valor que coincida.
Una vez que encuentre el valor, la función utilizará la palabra clave return para devolver el índice de ese valor. Con un índice, puedes eliminarlo del arreglo.
Copia el arreglo llamado playerItems a continuación.
local playerItems = {"Poción","Pan","Pan","Saco de dormir"}Codifica una nueva función llamada findValue() con dos parámetros:
whichArray - el arreglo a buscar.
itemName - la cadena específica a comprobar.
local function findValue(whichArray, itemName)end
En findValue(), utiliza un bucle for para comprobar si algún valor en el arreglo coincide con itemName. Si el valor coincide, utiliza la palabra clave return para devolver el valor encontrado en currentIndex.
local function findValue(whichArray, itemName)for currentIndex = 1, #whichArray doif whichArray[currentIndex] == itemName thenreturn currentIndexendendendPrueba la función de búsqueda creando una variable llamada valueFound y llamando a findValue(). Pasa el arreglo a buscar y qué valor debería buscar. Ejecuta el código para confirmar que la salida esperada es el índice 2.
local function findValue(whichArray, itemName)for currentIndex = 1, #whichArray doif whichArray[currentIndex] == itemName then-- Devuelve el valor de currentIndexreturn currentIndexendendendlocal valueFound = findValue(playerItems, "Pan")print("El valor está en el índice " .. valueFound)
Eliminar un valor
Si un valor fue encontrado usando la función find, se puede eliminar. Verifica si un valor fue encontrado con una sentencia if.
Verifica si un valor está dentro de valueFound; si es así, elimina el valor usando table.remove().
if valueFound thentable.remove(playerItems, valueFound)endImprime el arreglo usando el siguiente código.
for index = 1, #playerItems dolocal itemString = playerItems[index]print("Índice " .. index .. ": " .. itemString)endRealiza pruebas y verifica que el primer valor "Pan" fue eliminado del arreglo. Prueba eliminar otros valores cambiando el segundo parámetro en findValue().
Nota que debido a que esta función fue llamada una vez, solo la primera instancia de "Pan" fue eliminada. La siguiente sección cubrirá cómo encontrar y eliminar todas las instancias.
Encontrar y eliminar todas las instancias de un valor específico
Mientras que el código anterior solo podía eliminar la primera instancia de un valor encontrado, este fragmento de código encontrará y eliminará todas las ocurrencias de un arreglo. Por ejemplo, si un jugador quisiera vender todo su pan en una tienda dentro del juego.
Usa un arreglo llamado playerItems con al menos cuatro valores y un conjunto de duplicados.
local playerItems = {"Poción","Pan","Pan","Saco de dormir"}Para recorrer el arreglo, crea un bucle for que recorra hacia atrás a través de playerItems, comenzando en #playerItems, finalizando en 1, e incrementando en -1.
for index = #playerItems, 1, -1 doendEn el bucle, usa una sentencia if para comprobar si el valor dentro de playerItems[index] es igual a "Pan", y si es así, elimina el ítem.
for index = #playerItems, 1, -1 doif playerItems[index] == "Pan" thentable.remove(playerItems, index)endendUsa el siguiente código para agregar un segundo bucle for que imprima el arreglo.
for index = 1, #playerItems dolocal itemString = playerItems[index]print("Índice " .. index .. ": " .. itemString)endEjecuta el script y verifica que todos los valores llamados "Pan" sean eliminados.
Resumen
Los valores pueden ser eliminados o agregados a un arreglo, pero ten cuidado con el desplazamiento de los índices al hacerlo. Usa bucles para iterar a través de una tabla para eliminar todas las instancias de un valor, o solo la primera instancia encontrada.
La palabra clave return puede usarse para detener un bucle y enviar información de regreso donde sea necesario.
Una versión terminada del script se puede referenciar a continuación.
El siguiente proyecto incluye todos los scripts en este tutorial. Descárgalo aquí.
Ten en cuenta que todos los scripts están en ServerScriptService y desactivados. Para usar un script, en sus propiedades, desmarca el campo Deshabilitado y ejecuta Studio.