Menu
Coddy logo textTech

table.sort()

Parte da seção Lógica e Fluxo do Journey de Lua da Coddy. Lição 7 de 54.

Ao trabalhar com tabelas do tipo lista, você frequentemente precisará organizar os dados em uma ordem específica. Lua fornece a função table.sort() para organizar os elementos da tabela in-place, o que significa que ela modifica a tabela original em vez de criar uma nova.

A sintaxe básica é direta:

table.sort(myTable)

Por padrão, table.sort() organiza números em ordem crescente e strings em ordem alfabética. Aqui está um exemplo com uma lista de pontuações:

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

Para strings, a ordenação segue a ordem alfabética:

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

Às vezes, a ordenação padrão não é o que você precisa. Você pode fornecer uma função de comparação personalizada como um segundo argumento para controlar como os elementos são comparados. Esta função recebe dois elementos e retorna true se o primeiro deve vir antes do segundo:

local numbers = {5, 2, 8, 1}
table.sort(numbers, function(a, b)
    return a > b  -- Ordenar em ordem decrescente
end)
-- numbers agora é {8, 5, 2, 1}

A função table.sort() funciona apenas com tabelas do tipo lista que possuem chaves inteiras sequenciais começando de 1. É uma ferramenta poderosa para organizar dados antes de exibi-los ou processá-los em uma ordem específica.

challenge icon

Desafio

Fácil

Escreva uma função sortScoresDescending que receba uma tabela scores e retorne uma string formatada com as pontuações ordenadas em ordem decrescente.

Use table.sort() com uma função de comparação personalizada para organizar as pontuações da maior para a menor e, em seguida, use table.concat() para uni-las em uma única string separada por vírgulas.

Parâmetros:

  • scores (tabela): Uma tabela no estilo lista contendo pontuações numéricas

Retorna: Uma string com as pontuações ordenadas da maior para a menor, separadas por vírgulas. Formato: 95,87,76,54

Experimente você mesmo

function sortScoresDescending(scores)
    -- Escreva o código aqui
end
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Lógica e Fluxo

Pratique por conta própria: Compilador de Lua online