Realizar cambios en arreglos

*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.

El contenido de un arreglo a menudo tendrá que 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 preconstruidas para tablas como agregar y eliminar, mientras se describe cómo buscar un valor.

Para aplicar estas habilidades, crearás un script que ayuda a gestionar el inventario de un jugador.

Agregar valores a arreglos

Para agregar un nuevo valor a un arreglo, usa table.insert(array, valueToInsert). El segundo parámetro puede ser cualquier valor, como una cadena, un número o un objeto completo, como Player o IntValue.

Para practicar, crearás un script que almacena los ítems del jugador en una tabla y luego los agregarás. Dado que este ejemplo es solo un script, se puede usar con cualquier archivo o proyecto. La prueba del código se realizará utilizando la ventana de Salida.

  1. Crea un arreglo vacío llamado playerItems.

    playerItems = {}
  2. Agrega ítems de inventario al arreglo escribiendo table.insert(). En los paréntesis, escribe playerItems, la tabla a la que agregar, seguido 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)
  3. 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 sale de un juego, usa table.remove(). Dependiendo de los parámetros proporcionados, la función puede eliminar 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 en un arreglo, usa table.remove(arrayName). En este caso, el único parámetro necesario es la tabla misma.

  1. 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)
  2. 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).

  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)
  2. 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, usa la función table.find(). Alternativamente, puedes codificar tu propia función de búsqueda usando bucles for y declaraciones if.

Encontrar y devolver un solo 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 coincidente.

Una vez que encuentre el valor, la función usará la palabra clave return para devolver el índice de ese valor. Con un índice, puedes eliminarlo del arreglo.

  1. Copia el arreglo llamado playerItems a continuación.

    local playerItems = {
    "Poción",
    "Pan",
    "Pan",
    "Saco de dormir"
    }
  2. Codifica una nueva función llamada findValue() con dos parámetros:

    • whichArray - el arreglo a buscar.

    • itemName - la cadena específica a verificar.

      local function findValue(whichArray, itemName)
      end
  3. En findValue(), usa un bucle for para verificar si algún valor en el arreglo coincide con itemName. Si el valor coincide, usa la palabra clave return para devolver el valor encontrado en currentIndex.

    local function findValue(whichArray, itemName)
    for currentIndex = 1, #whichArray do
    if whichArray[currentIndex] == itemName then
    return currentIndex
    end
    end
    end
  4. Prueba 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 do
    if whichArray[currentIndex] == itemName then
    --Devuelve el valor de currentIndex
    return currentIndex
    end
    end
    end
    local valueFound = findValue(playerItems, "Pan")
    print("El valor está en el índice " .. valueFound)

Eliminar un valor

Si se encontró un valor usando la función de búsqueda, se puede eliminar. Verifica si se encontró un valor con una declaración if.

  1. Verifica si hay un valor dentro de valueFound; si es así, elimina el valor usando table.remove().

    if valueFound then
    table.remove(playerItems, valueFound)
    end
  2. Imprime el arreglo usando el siguiente código.

    for index = 1, #playerItems do
    local itemString = playerItems[index]
    print("Índice " .. index .. ": " .. itemString)
    end
  3. Realiza pruebas y verifica que el primer valor "Pan" fue eliminado del arreglo. Intenta 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.

  1. Usa un arreglo llamado playerItems con al menos cuatro valores y un conjunto de duplicados.

    local playerItems = {
    "Poción",
    "Pan",
    "Pan",
    "Saco de dormir"
    }
  2. Para recorrer el arreglo, crea un bucle for que vaya hacia atrás a través de playerItems, comenzando en #playerItems, terminando en 1, e incrementando en -1.

    for index = #playerItems, 1, -1 do
    end
  3. En el bucle, usa una declaración if para verificar si el valor dentro de playerItems[index] es igual a "Pan", y si es así, elimina el ítem.

    for index = #playerItems, 1, -1 do
    if playerItems[index] == "Pan" then
    table.remove(playerItems, index)
    end
    end
  4. Usa el siguiente código para agregar un segundo bucle for que imprima el arreglo.

    for index = 1, #playerItems do
    local itemString = playerItems[index]
    print("Índice " .. index .. ": " .. itemString)
    end
  5. Ejecuta 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 los índices que se desplazan 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 se puede usar para detener un bucle y enviar información de vuelta donde sea necesario.

Una versión final del script se puede consultar a continuación.

El siguiente proyecto incluye todos los scripts de este tutorial. Descárgalo aquí.

Nota que todos los scripts están en ServerScriptService y deshabilitados. Para usar un script, en sus propiedades, desmarca el campo Deshabilitado y ejecuta Studio.

©2026 Roblox Corporation. Roblox, el logotipo de Roblox y "Powering Imagination" son algunas de nuestras marcas registradas y no registradas en los Estados Unidos y otros países.