function PrintTable(tb)
for k,v in pairs(tb) do
print(v)
end
print("-------------------")
end function PrintTable2(tb)
for i,v in ipairs(tb) do
print(v)
end
print("-------------------")
end --------------------------------------------------------------A:删除
--1.删除数组(从后往前删除)
local a = {,,,,,}
local a2 = {,,,,,} --方法1(牺牲时间):
--在数组数量大且满足条件的元素多时不宜使用,因为会移动大量元素
for i=#a,,- do
if (a[i] % == ) then
table.remove(a, i)
end
end
PrintTable(a)--1,3,5 --方法2(牺牲空间):
local a3 = {}
for i=,#a2 do
if (a2[i] % ~= ) then
table.insert(a3, a2[i])
end
end
PrintTable(a3)--1,3,5 --2.删除字典(置空)
local b = {["a"]=,,,[]="b",,,} for k,v in pairs(b) do
if ((k == "a") or (type(v) == "number" and v % == )) then
b[k] = nil
end
end
PrintTable(b)--3,5,b --------------------------------------------------------------B:排序
--因为是排序,所以table必定是数组形式
--table.sort(table, function),原理是冒泡算法,相邻元素两两比较
--function返回true则表示排在前面 local c = {,,,,}
table.sort(c)--从小到大排序
PrintTable2(c)--1,2,3,4,5
table.sort(c, function(a,b) return a > b end)--从大到小排序
PrintTable2(c)--5,4,3,2,1 local c2 = {
{id=, name="e"},
{id=, name="c"},
{id=, name="a"},
{id=, name="b"},
{id=, name="d"},
}
table.sort(c2, function(a,b) return a.id < b.id end)
for i,v in ipairs(c2) do
print(v.name)
end
print("-------------------")--输出:b,c,d,a,e --多字段排序(先处理优先级低的)
--优先级:1.等级由高到低 2.id由高到低
local c3 = {
{id=, level=},
{id=, level=},
{id=, level=},
{id=, level=},
}
table.sort(c3, function(a,b)
if (a.level == b.level) then
return a.id > b.id
else
return a.level > b.level
end
end)
for i,v in ipairs(c3) do
print(v.id)
end
print("-------------------")--输出:4,3,1,2

[Lua]table(二):删除与排序的更多相关文章

  1. lua table 排序--满足多条件排序

    前提 假设 一个小怪 有三种属性,等级(level).品质(quality).id(pid) 我们需要对他们进行排序,两种排序情况,第一是单一属性排序,比如按照等级进行排序,或者多种属性进行优先级排序 ...

  2. lua table排序报错与解决

    lua table排序 table的sort函数 比如按照大小进行排序,下面这种写法在某些情况下可能会排序错误,甚至报invalid order function for sorting table. ...

  3. Lua table.sort排序

    在用table.sort 排序的时候注意,如果使用多个条件排序,应在一个排序函数里按照条件优先级进行比较排序. 例如 local t = { {time = , i = }, {time = , i ...

  4. LUA table学习笔记

    function printT( ... ) for i,v in ipairs(...) do print(i,v) end end t1={} t2={} t3={} table.insert(t ...

  5. Lua table库整理(v5.1)

    这个库提供了表处理的通用函数. 所有函数都放在表 table. 无论何时,若一个操作需要取表的长度, 这张表必须是一个真序列. table.concat(list, [, sep, [, i , [, ...

  6. lua table表

    lua table表 语法结构 创建一个 table 直接使用 "{}" 即可 table1 = {} -- 赋值 table1["name"] = " ...

  7. Lua 学习之基础篇四<Lua table(表)>

    table 是 Lua 的一种数据结构用来帮助我们创建不同的数据类型,如:数组.字典等. Lua table 使用关联型数组,你可以用任意类型的值来作数组的索引,但这个值不能是 nil. Lua ta ...

  8. Lua table之弱引用

    Lua采用了基于垃圾收集的内存管理机制,因此对于程序员来说,在很多时候内存问题都将不再困扰他们.然而任何垃圾收集器都不是万能的,在有些特殊情况下,垃圾收集器是无法准确的判断是否应该将当前对象清理.这样 ...

  9. lua table integer index 特性

    table.maxn (table) Returns the largest positive numerical index of the given table, or zero if the t ...

随机推荐

  1. nginx支持android、ios、微信扫一扫

    首先做一个android下载的html页面,页面中识别微信浏览器提示在浏览器中打开,然后在nginx对ios进行识别并跳转到apple store #下载App location ^~ /appDow ...

  2. nusaop 关于webService

    用PHP和NuSoap来建立SOAP服务器非常容易.基本上,你只要写出你想要暴露给你的Web services的函数,然后用NuSoap去注册它们就可以了.OK,另外还需要两步才能完成PHP SOAP ...

  3. 【转】使用kettle工具遇到的问题汇总及解决方案

    使用kettle工具遇到的问题汇总及解决方案   转载文章版权声明:本文转载,原作者薄海 ,原文网址链接 http://blog.csdn.net/bohai0409/article/details/ ...

  4. vagrant 安装笔记

    本文档的编写参考慕课网视频教程,感谢慕课网提供的免费教程 http://www.imooc.com/learn/805 搭建一个环境,不需要重复配置,直接利用vagrant复制就可以了 https:/ ...

  5. js中的 Table 对象

    Table 对象Table 对象代表一个 HTML 表格.在 HTML 文档中 <table> 标签每出现一次,一个 Table 对象就会被创建. Table 对象集合cells[]    ...

  6. 使用Html Agility Pack快速解析Html内容

    Html Agility Pack 是一个开源的.NET 方案HTML解析器. 开源地址:https://github.com/zzzprojects/html-agility-pack 用法:vs上 ...

  7. gitlab ssh clone问题解决

    公司搭建的gitlab,通过http协议可以clone: [sisi@pre-srv24 gitlab]$ git clone http://gitlab.test.mycompany.com/dev ...

  8. Python如何查询Mysql

    Python查询Mysql使用 fetchone() 方法获取单条数据, 使用fetchall() 方法获取多条数据. fetchone(): 该方法获取下一个查询结果集.结果集是一个对象 fetch ...

  9. JS属性描述符之Object.defineProperty()定义对象属性特性

    一.Object.defineProperty的作用 用来给对象新增属性,和修改对象中的属性. 二.JS对象中的描述符 js对象中两种属性描述符:数据描述符和存取描述符(访问描述符). 注意事项: 1 ...

  10. Javascript中的this(七)

    一.为什么要用this      通过this可以在不同的上下文对象中重复使用函数 二.this是什么      this就是我们说的执行上下文(包含调用栈(哪里被调用).函数的调用方式.传入的参数等 ...