luatable.sort
local function compare_with_flag(a, b)
-- 如果a和b都有标志,则按照它们的某个字段进行排序
if a.flag and b.flag then
return a.sort_field < b.sort_field -- 假设有一个sort_field字段用于排序
-- 如果a有标志而b没有,则a应该排在b前面
elseif a.flag and not b.flag then
return true
-- 如果b有标志而a没有,则b应该排在a前面(实际上这种情况不会发生,因为a已经在前面了)
elseif not a.flag and b.flag then
return false
-- 如果a和b都没有标志,则它们的顺序可以是任意的,或者你也可以按照某个字段进行排序
else
return false -- 这里简单地让没有标志的元素保持原顺序
end
end
local my_table = {
{flag = true, sort_field = 3},
{flag = false, sort_field = 1},
{flag = true, sort_field = 2},
{flag = false, sort_field = 4},
}
-- 使用自定义比较函数对table进行排序
table.sort(my_table, compare_with_flag)
-- 打印排序后的table
for _, v in ipairs(my_table) do
print(v.flag, v.sort_field)
end
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了