Menu
CoddyTech

table.sort()

本课属于 Coddy Lua 学习旅程的“逻辑与流程”单元。第 7 课,共 54 课。

处理列表形式的表格时,你通常需要按特定顺序整理数据。Lua 提供了 table.sort() 函数,可以原地排列表格元素,也就是说,它会修改原表格,而不是创建一个新表格。

基本语法很简单:

table.sort(myTable)

默认情况下,table.sort()会按升序排列数字,并按字母顺序排列字符串。下面是一个分数列表的示例:

local scores = {85, 42, 91, 67, 55}
table.sort(scores)
-- scores 现在是 {42, 55, 67, 85, 91}

对于字符串,排序会按字母顺序进行:

local names = {"Charlie", "Alice", "Bob"}
table.sort(names)
-- names 现在是 {"Alice", "Bob", "Charlie"}

有时,默认排序并不是你需要的结果。你可以提供一个自定义比较函数作为第二个参数,用来控制元素的比较方式。如果第一个元素应该排在第二个元素前面,这个函数就返回 true:

local numbers = {5, 2, 8, 1}
table.sort(numbers, function(a, b)
    return a > b  -- 按降序排序
end)
-- numbers 现在是 {8, 5, 2, 1}

table.sort() 函数只适用于列表式表,这类表的整数键从 1 开始连续排列。它是一个强大的工具,可以在显示数据或按特定顺序处理数据之前对数据进行整理。

challenge icon

挑战

简单

编写一个函数 sortScoresDescending,接收一个 scores 表,并返回按降序排列的分数格式化字符串。

使用 table.sort() 和自定义比较函数,将分数从高到低排列,然后使用 table.concat() 将它们连接成一个以逗号分隔的字符串。

参数:

  • scores(表):包含数值分数的列表式表

返回值:按从高到低排列、以逗号分隔的分数字符串。格式:95,87,76,54

亲手试试

function sortScoresDescending(scores)
    -- 在这里编写代码
end
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

逻辑与流程中的所有课

自己练习: Lua 在线编译器