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.

Aunque 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 del inventario o puntuaciones de juegos, donde cada entrada es a su vez una tabla con varios campos.

Para ordenar estas estructuras complejas, debes indicar 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 aparecer antes que el segundo en el orden ordenado.

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 de jugadores estará ordenada por puntuación en orden descendente, con Bob en primer lugar (200), Charlie en segundo (175) y Alice en tercer lugar (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 quieras: nombres alfabéticamente, niveles numéricamente o incluso combinar varios 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

Practica por tu cuenta: Compilador de Lua online