lua对table排序,键值排序法

先是一个key,value的键值对,实现思路是:先遍历获取到整个table的key值,然后对key值进行升序或降序,根据排序后的key值以此取出table里面的数据进行临时存储,得到排序后的table
测试地址:https://c.runoob.com/compile/66

skillgroup =
{   
    ["101"] =
    {
      SkillGroupID = 101,
  SkillType = 0,
  Condition = 1,
  
    },
    ["102"] =
    {
      SkillGroupID = 102,
  SkillType = 1,
  Condition = 1,
  
    },
    ["103"] =
    {
      SkillGroupID = 103,
  SkillType = 1,
  Condition = 1,
  
    },
    ["104"] =
    {
      SkillGroupID = 104,
  SkillType = 1,
  Condition = 2,
  
    },
}
for i in pairs(skillgroup) do
    print("直接输出:"..i)
end
-- 直接获取table的数据进行遍历发现数据不像list那样是直接索引取出排序好的,下面进行排序
-- 插入key
local keyTest ={}
for i in pairs(skillgroup) do
   table.insert(keyTest,i)  
end
-- 对key进行升序
table.sort(keyTest,function(a,b)return (tonumber(a) <  tonumber(b)) end)  
--对key进行降序
table.sort(keyTest,function(a,b)return (tonumber(a) >  tonumber(b)) end)  
-- 结果数据
local result = { }
for i,v in pairs(keyTest) do
   table.insert(result,skillgroup[v])
    print("id:"..v.."     data:"..skillgroup[v].SkillGroupID)
end

打印输出

直接输出:103
直接输出:104
直接输出:101
直接输出:102

-- 升序结果
id:101     data:101
id:102     data:102
id:103     data:103
id:104     data:104

--降序结果
id:104     data:104
id:103     data:103
id:102     data:102
id:101     data:101


local info = {fight = 100,name = "aa",camp = 1}
local info1 = {fight = 55,name = "bb",camp = 3}
local info2 = {fight = 55,name = "cc",camp = 2}

local allInfo = {}
table.insert(allInfo,info)
table.insert(allInfo,info1)
table.insert(allInfo,info2)

for i, v in pairs(allInfo) do
    print(v.fight)
end 
print("—————————排序———————————")

table.sort(allInfo,function(a,b)
        
        --return (a.fight > b.fight)
     if (a.fight ~= b.fight) then
              return a.fight > b.fight
          end
            return  a.camp < b.camp
    
    end)  

for i, v in pairs(allInfo) do
    print(v.fight.."  "..v.name)
end 
 

PRINT

100
55
55
—————————排序———————————
100  aa
55  cc
55  bb
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • java笔记第一天 == 和 equals ==比较的比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量...
    jmychou阅读 5,433评论 0 3
  • table.concat(table, sep, start, end) concat是concatenate(连...
    曾令伟阅读 4,112评论 0 2
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,368评论 18 399
  • 只是想记录生活。 “ 女孩子不要太辛苦,要快乐”
    Super霏微阅读 1,225评论 0 1
  • 我说了分手,你却没有挽留,让我失望无力。攒足了失望。便不会留恋。可心还是会痛,会难受。
    5db78345aaef阅读 2,144评论 2 0

友情链接更多精彩内容