Menu
Coddy logo textTech

pairs() vs. ipairs()

Parte de la sección Logic & Flow del Journey de Lua de Coddy — lección 3 de 54.

Ahora que has aprendido tanto pairs() como ipairs(), es importante entender cuándo usar cada uno. La elección depende totalmente de la estructura de tu tabla y de lo que estés intentando lograr.

Usa ipairs() cuando tengas una tabla de estilo lista con claves enteras secuenciales que comiencen desde 1. Procesa los elementos en orden y se detiene en el primer valor nil, lo que lo hace perfecto para arreglos donde el orden importa.

Usa pairs() cuando tu tabla tenga claves de cadena, tipos de clave mixtos o cuando necesites acceder a todas las entradas independientemente de los huecos. Itera a través de cada par clave-valor en la tabla sin ningún orden específico.

Considera esta tabla mixta:

local gameData = {
    "Level 1",
    "Level 2", 
    "Level 3",
    currentLevel = 2,
    playerName = "Hero"
}

Si usas ipairs(), solo verás las tres cadenas de nivel. Si usas pairs(), verás las cinco entradas, incluyendo las claves de cadena.

challenge icon

Desafío

Fácil

Escribe una función countSequentialItems que recibe una tabla data y devuelve la cantidad de elementos con claves enteras secuenciales.

Usa ipairs() para contar cuántos elementos existen en la parte secuencial de la tabla (empezando desde el índice 1 hasta el primer nil). Esto te ayudará a entender la diferencia entre ipairs() y pairs() al trabajar con tablas mixtas.

Parámetros:

  • data (table): Una tabla mixta que contiene tanto claves enteras secuenciales como claves de cadena

Devuelve: El número de elementos secuenciales (number)

Hoja de referencia

Usa ipairs() para tablas de estilo lista con claves enteras secuenciales que comienzan desde 1. Procesa los elementos en orden y se detiene en el primer valor nil:

for i, value in ipairs(myList) do
    -- procesa solo elementos secuenciales
end

Usa pairs() para tablas con claves de cadena, tipos de clave mixtos, o cuando necesites acceder a todas las entradas independientemente de los huecos. Itera a través de cada par clave-valor sin un orden específico:

for key, value in pairs(myTable) do
    -- procesa todos los pares clave-valor
end

Ejemplo con una tabla mixta:

local gameData = {
    "Level 1",
    "Level 2", 
    "Level 3",
    currentLevel = 2,
    playerName = "Hero"
}

-- ipairs() solo ve: "Level 1", "Level 2", "Level 3"
-- pairs() ve las cinco entradas

Pruébalo tú mismo

function countSequentialItems(data)
    -- Escribe el código aquí
end
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Logic & Flow