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

posted @   mc宇少  阅读(249)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示