1 function PrintTable(tb) 2 for k,v in pairs(tb) do 3 print(v) 4 end 5 print("-------------------") 6 end 7 8 function PrintTable2(tb) 9 for i,v in ipairs(tb) do 10 print(v) 11 end 12 print("-------------------") 13 end 14 15 --------------------------------------------------------------A:删除 16 --1.删除数组(从后往前删除) 17 local a = {1,2,3,4,5,6} 18 local a2 = {1,2,3,4,5,6} 19 20 --方法1(牺牲时间): 21 --在数组数量大且满足条件的元素多时不宜使用,因为会移动大量元素 22 for i=#a,1,-1 do 23 if (a[i] % 2 == 0) then 24 table.remove(a, i) 25 end 26 end 27 PrintTable(a)--1,3,5 28 29 --方法2(牺牲空间): 30 local a3 = {} 31 for i=1,#a2 do 32 if (a2[i] % 2 ~= 0) then 33 table.insert(a3, a2[i]) 34 end 35 end 36 PrintTable(a3)--1,3,5 37 38 --2.删除字典(置空) 39 local b = {["a"]=1,2,3,[20]="b",4,5,6} 40 41 for k,v in pairs(b) do 42 if ((k == "a") or (type(v) == "number" and v % 2 == 0)) then 43 b[k] = nil 44 end 45 end 46 PrintTable(b)--3,5,b 47 48 --------------------------------------------------------------B:排序 49 --因为是排序,所以table必定是数组形式 50 --table.sort(table, function),原理是冒泡算法,相邻元素两两比较 51 --function返回true则表示排在前面 52 53 local c = {4,3,5,1,2} 54 table.sort(c)--从小到大排序 55 PrintTable2(c)--1,2,3,4,5 56 table.sort(c, function(a,b) return a > b end)--从大到小排序 57 PrintTable2(c)--5,4,3,2,1 58 59 local c2 = { 60 {id=9, name="e"}, 61 {id=2, name="c"}, 62 {id=8, name="a"}, 63 {id=1, name="b"}, 64 {id=5, name="d"}, 65 } 66 table.sort(c2, function(a,b) return a.id < b.id end) 67 for i,v in ipairs(c2) do 68 print(v.name) 69 end 70 print("-------------------")--输出:b,c,d,a,e 71 72 --多字段排序(先处理优先级低的) 73 --优先级:1.等级由高到低 2.id由高到低 74 local c3 = { 75 {id=1, level=7}, 76 {id=2, level=6}, 77 {id=3, level=8}, 78 {id=4, level=8}, 79 } 80 table.sort(c3, function(a,b) 81 if (a.level == b.level) then 82 return a.id > b.id 83 else 84 return a.level > b.level 85 end 86 end) 87 for i,v in ipairs(c3) do 88 print(v.id) 89 end 90 print("-------------------")--输出:4,3,1,2
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?