Menu
Coddy logo textTech

table.sort()

Część sekcji Logika i przepływ programu ścieżki Lua w Coddy. Lekcja 7 z 54.

Podczas pracy z tabelami w postaci listy często trzeba uporządkować dane w określonej kolejności. Lua udostępnia funkcję table.sort(), która sortuje elementy tabeli w miejscu, czyli modyfikuje oryginalną tabelę zamiast tworzyć nową.

Podstawowa składnia jest prosta:

table.sort(myTable)

Domyślnie table.sort() układa liczby w kolejności rosnącej, a ciągi znaków alfabetycznie. Oto przykład z listą wyników:

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

W przypadku ciągów znaków sortowanie odbywa się w kolejności alfabetycznej:

local names = {"Charlie", "Alice", "Bob"}
table.sort(names)
-- names ma teraz wartość {"Alice", "Bob", "Charlie"}

Czasami domyślne sortowanie nie jest tym, czego potrzebujesz. Możesz przekazać własną funkcję porównującą jako drugi argument, aby określić, jak porównywane są elementy. Ta funkcja przyjmuje dwa elementy i zwraca true, jeśli pierwszy powinien znaleźć się przed drugim:

local numbers = {5, 2, 8, 1}
table.sort(numbers, function(a, b)
    return a > b  -- Sortuj w kolejności malejącej
end)
-- numbers ma teraz wartość {8, 5, 2, 1}

Funkcja table.sort() działa tylko z tablicami w stylu listy, które mają kolejne klucze całkowite zaczynające się od 1. To potężne narzędzie do porządkowania danych przed ich wyświetleniem lub przetwarzaniem w określonej kolejności.

challenge icon

Wyzwanie

Łatwy

Napisz funkcję sortScoresDescending, która przyjmuje tablicę scores i zwraca sformatowany ciąg znaków z posortowanymi wynikami w kolejności malejącej.

Użyj table.sort() z niestandardową funkcją porównującą, aby uporządkować wyniki od najwyższego do najniższego, a następnie użyj table.concat(), aby połączyć je w jeden ciąg znaków rozdzielony przecinkami.

Parametry:

  • scores (tablica): tablica w formie listy zawierająca wyniki liczbowe

Zwraca: Ciąg znaków z wynikami posortowanymi od najwyższego do najniższego i rozdzielonymi przecinkami. Format: 95,87,76,54

Spróbuj swoich sił

function sortScoresDescending(scores)
    -- Napisz kod tutaj
end
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Logika i przepływ programu

Poćwicz samodzielnie: Kompilator Lua online