Menu
Coddy logo textTech

table.sort()

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

Al trabajar con tablas de tipo lista, a menudo necesitarás organizar los datos en un orden específico. Lua proporciona la función table.sort() para ordenar los elementos de la tabla in situ, lo que significa que modifica la tabla original en lugar de crear una nueva.

La sintaxis básica es sencilla:

table.sort(myTable)

Por defecto, table.sort() ordena los números en orden ascendente y las cadenas alfabéticamente. Aquí tienes un ejemplo con una lista de puntuaciones:

local scores = {85, 42, 91, 67, 55}
table.sort(scores)
-- scores ahora es {42, 55, 67, 85, 91}

Para las cadenas, la ordenación sigue el orden alfabético:

local names = {"Charlie", "Alice", "Bob"}
table.sort(names)
-- names es ahora {"Alice", "Bob", "Charlie"}

A veces, el ordenamiento predeterminado no es lo que necesitas. Puedes proporcionar una función de comparación personalizada como segundo argumento para controlar cómo se comparan los elementos. Esta función toma dos elementos y devuelve true si el primero debe ir antes que el segundo:

local numbers = {5, 2, 8, 1}
table.sort(numbers, function(a, b)
    return a > b  -- Ordenar en orden descendente
end)
-- numbers es ahora {8, 5, 2, 1}

La función table.sort() solo funciona con tablas de estilo lista que tienen claves enteras secuenciales que comienzan desde 1. Es una herramienta poderosa para organizar datos antes de mostrarlos o procesarlos en un orden específico.

challenge icon

Desafío

Fácil

Escribe una función sortScoresDescending que reciba una tabla scores y devuelva una cadena formateada de las puntuaciones ordenadas en orden descendente.

Usa table.sort() con una función de comparación personalizada para organizar las puntuaciones de mayor a menor, luego usa table.concat() para unirlas en una sola cadena separada por comas.

Parámetros:

  • scores (table): Una tabla de tipo lista que contiene puntuaciones numéricas

Devuelve: Una cadena con las puntuaciones ordenadas de mayor a menor, separadas por comas. Formato: 95,87,76,54

Hoja de referencia

La función table.sort() organiza los elementos de la tabla en su lugar, modificando la tabla original:

table.sort(myTable)

Por defecto, ordena los números en orden ascendente y las cadenas alfabéticamente:

local scores = {85, 42, 91, 67, 55}
table.sort(scores)
-- scores ahora es {42, 55, 67, 85, 91}

local names = {"Charlie", "Alice", "Bob"}
table.sort(names)
-- names ahora es {"Alice", "Bob", "Charlie"}

Puedes proporcionar una función de comparación personalizada como segundo argumento. La función toma dos elementos y devuelve true si el primero debe ir antes que el segundo:

local numbers = {5, 2, 8, 1}
table.sort(numbers, function(a, b)
    return a > b  -- Ordenar en orden descendente
end)
-- numbers ahora es {8, 5, 2, 1}

table.sort() solo funciona con tablas de tipo lista que tienen claves enteras secuenciales que comienzan desde 1.

Pruébalo tú mismo

function sortScoresDescending(scores)
    -- 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