zoukankan      html  css  js  c++  java
  • [Lua]table(二):删除与排序

     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
  • 相关阅读:
    SQLServer2012数据库降级至SQLServer2008R2的方法
    男程序猿和女程序猿的网恋—相见(二)
    收藏关于AI的相关的文章
    JAVA提高九:集合体系
    JAVA提高八:动态代理技术
    JAVA提高七:类加载器
    JAVA提高六:泛型
    JAVA提高五:注解Annotation
    JAVA提高四:反射基本应用
    JAVA提高三:反射总结
  • 原文地址:https://www.cnblogs.com/lyh916/p/8284605.html
Copyright © 2011-2022 走看看