Menu
CoddyTech

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 con listas sencillas de números o cadenas, los datos del mundo real suelen ser más complejos. Puede que tengas una tabla de registros de jugadores, artículos del inventario o puntuaciones de juegos, donde cada entrada es en sí misma una tabla con varios campos.

Para ordenar estas estructuras complejas, necesitas 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 quedará ordenada por puntuación en orden descendente, con Bob en primer lugar (200), Charlie en segundo lugar (175) y Alice en tercer lugar (150). La función de comparación accede al campo score de cada tabla de jugadores 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