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