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的數據進行遍歷發(fā)現數據不像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
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • java筆記第一天 == 和 equals ==比較的比較的是兩個變量的值是否相等,對于引用型變量表示的是兩個變量...
    jmychou閱讀 1,644評論 0 3
  • table.concat(table, sep, start, end) concat是concatenate(連...
    曾令偉閱讀 838評論 0 2
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,623評論 18 399
  • 只是想記錄生活。 “ 女孩子不要太辛苦,要快樂”
    Super霏微閱讀 155評論 0 1
  • 我說了分手,你卻沒有挽留,讓我失望無力。攢足了失望。便不會留戀??尚倪€是會痛,會難受。
    5db78345aaef閱讀 321評論 2 0

友情鏈接更多精彩內容