table.sort con comparadores
Ordene tablas con funciones comparadoras personalizadas y estrategias de ordenación estable.
table.sort con comparadores es una lección gratuita de Lua Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Lua Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Lua Academy incluye 4 lecciones en total.
¿Qué es table.sort?
table.sort ordena una tabla en el mismo sitio mediante una función de comparación. Sin un comparador, utiliza el operador <.
Ordenación ascendente predeterminada
Llame a table.sort(t) con una tabla de números o cadenas para ordenarla de forma ascendente.
local nums = {5, 2, 8, 1, 9}
table.sort(nums)
for _, v in ipairs(nums) do print(v) endComparador personalizado
Pase una función function(a, b) return a < b end como segundo argumento.
local words = {"banana", "apple", "cherry"}
table.sort(words, function(a, b) return a < b end)
print(table.concat(words, ", "))Ordenación descendente
Invierta la comparación para ordenar de forma descendente.
local nums = {3, 1, 4, 1, 5, 9}
table.sort(nums, function(a, b) return a > b end)
print(table.concat(nums, ", "))Ordenar tablas por un campo
Ordene un array de registros por una clave de campo específica.
local people = {
{name="Charlie", age=30},
{name="Alice", age=25},
{name="Bob", age=28}
}
table.sort(people, function(a, b) return a.age < b.age end)
for _, p in ipairs(people) do print(p.name, p.age) endOrdenación por varias claves
Ordene por una clave principal y, en caso de empate, por una clave secundaria.
table.sort(people, function(a, b)
if a.age ~= b.age then return a.age < b.age end
return a.name < b.name
end)Nota sobre la estabilidad
table.sort de Lua no garantiza la estabilidad. Los elementos iguales pueden aparecer en cualquier orden. Use un desempate basado en el índice para obtener resultados deterministas.
Ordenar cadenas sin distinguir mayúsculas y minúsculas
Normalice con string.lower dentro del comparador.
table.sort(words, function(a, b)
return a:lower() < b:lower()
end)Ordenación con un extractor de claves
Almacene en caché las claves extraídas para evitar cálculos repetidos durante la ordenación mediante un enfoque de transformación de Schwartz.
local function sortBy(t, keyFn)
local keyed = {}
for i, v in ipairs(t) do keyed[i] = {val=v, key=keyFn(v)} end
table.sort(keyed, function(a, b) return a.key < b.key end)
for i, item in ipairs(keyed) do t[i] = item.val end
endOrdenar tablas grandes
Para tablas muy grandes, considere una transformación de Schwartz: asocie cada elemento con su clave de ordenación, ordene y después extraiga los elementos. Así se evita recalcular la clave en cada comparación.
En el mismo sitio frente a copia
table.sort modifica la tabla original. Para ordenar una copia, use primero table.move o itere para clonarla y, después, ordene el clon.
Pregunta sobre comparadores
¿Qué comparador ordena los números de forma ascendente?
Repaso: table.sort
table.sort ordena en el mismo sitio, acepta un comparador opcional, no es estable y suele utilizarse con estrategias basadas en campos o en varias claves para requisitos de ordenación complejos.
Preguntas frecuentes
¿La lección «table.sort con comparadores» es gratis?
Sí — el texto completo de «table.sort con comparadores» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Lua Academy, actualiza a CoddyKit PRO. El curso de Lua Academy incluye 4 lecciones en total.
¿Qué aprenderé en «table.sort con comparadores»?
Ordene tablas con funciones comparadoras personalizadas y estrategias de ordenación estable. Practicas Lua Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Lua Academy?
No se requiere experiencia previa. Lua Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.
¿Cuánto tiempo toma la lección «table.sort con comparadores»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Lua Academy?
Sí. Cada lección de Lua Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- table.sort con comparadores
- table.concat y table.move
- Copia profunda y copia superficial
- Transformación de tablas: map, filter y reduce