Menu
Coddy logo textTech

Ordenamiento personalizado con funciones

Parte de la sección Lógica y flujo de control del Journey de Lua de Coddy — lección 8 de 54.

Si bien table.sort() funciona muy bien para listas simples de números o cadenas, los datos del mundo real suelen ser más complejos. Es posible que tengas una tabla de registros de jugadores, artículos de inventario o puntuaciones de juegos donde cada entrada es en sí misma una tabla con múltiples campos.

Para ordenar estas estructuras complejas, necesitas decirle a table.sort() exactamente cómo comparar dos entradas. Aquí es donde las funciones de comparación personalizadas se vuelven esenciales. Una función de comparación toma dos elementos y devuelve true si el primero debe ir antes que el segundo en el orden de clasificación.

Aquí tienes un ejemplo con una tabla de registros de jugadores:

local players = {
    {name = "Alice", score = 150},
    {name = "Bob", score = 200},
    {name = "Charlie", score = 175}
}

table.sort(players, function(a, b)
    return a.score > b.score
end)

Después de ordenar, la tabla players estará ordenada por score en orden descendente, con Bob primero (200), Charlie segundo (175) y Alice tercera (150). La función de comparación accede al campo score de cada tabla de jugador para determinar su orden.

Puedes ordenar por cualquier campo que desees: nombres alfabéticamente, niveles numéricamente o incluso combinar múltiples criterios.

Pruébalo tú mismo

Esta lección no incluye un desafío de código.

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 Lógica y flujo de control