前言:本文主要介绍项目中常用的四种函数。
table.sort() 排序
table.insert() 插入
table.remove() 删除
table.concat() 链接
1、table.sort ()
table.sort 是Lua 中内置的函数,用于对表(table)进行排序。
格式:table.sort(table [, function])
标橙的table则是我们需要排序的表。function 是定义排序的条件 可用可不用,一般项目中要求条件比较多都是会使用到的.
1.1、 不定义排序条件
例1:不定义排序条件
local num = {9,6,2,8,1}
table.sort(num)
for k, v in pairs(num) do
print("打印排序结果:",v)
end
由此可以看出在不定义排序条件的情况下,默认从小到大排序.而一般情况下排序不可能只是干巴巴的几个数字.具体需要以项目需求定义条件
1.2、条件排序
local list =
{
{id = 1, money = 121, level = 30},
{id = 2, money = 66, level = 86},
{id = 3, money = 66, level = 21},
{id = 4, money = 88, level = 66}
}
--先以money从大到小,在以level从小到大排序
table.sort(list,function(a,b)
if a.money > b.money then
return true
elseif a.money == b.money then
if a.level < b.level then
return true
end
end
return false
end)
for k, v in pairs(list) do
print(string.format("id = %d, money = %d, level = %d", v.id, v.money, v.level))
end
打印结果:
上面是一个双条件排序,先优先排序money字段,如果money字段相同在排序level字段。
当然这是一个小的示范,一切还要以策划的需求来判定,增加或者减少条件判定,三条件示范这里就不写了感兴趣的同道们可以自己写着玩,lua自带排序在某些场合可能不是太好用,但是一定能应用大部份场景.如果有不对的地方请指教第一时间会改正
2、table.insert()
table.insert 是Lua 中内置的函数,用于对表(table)进行插入操作。
就不说定义啥的了,直接上代码,快速应用适应项目为先
local Container = {}
local list =
{
{id = 1, money = 121, level = 30},
{id = 2, money = 66, level = 86},
{id = 3, money = 66, level = 21},
{id = 4, money = 88, level = 66},
{id = 5, money = 88, level = 66}
}
--保存插入 money = 88 or level = 66 的数据
for k ,v in pairs(list) do
if v.money == 66 or v.level == 66 then
table.insert(Container,v)
end
end
结果:
偷个懒,断点截图的。现在数据比较少,可以看到 Container 里面已经得到了四个符合条件的数据。在实例代码里,table.insert(Container,v) v可以使任何你想插入的数据。
项目中有不懂或者疑问的地方可以私信或者评论这里就不多做介绍了,有坑多踩踩记得比较牢固.(手动幸灾乐祸).
3、table.remove()
table.remove 对表数据进行删除操作
话不多说上代码:
local Container = {}
local list =
{
{id = 1, money = 121, level = 30},
{id = 2, money = 66, level = 86},
{id = 3, money = 66, level = 21},
{id = 4, money = 88, level = 66},
{id = 5, money = 88, level = 66}
}
--删除 money == 66 的数据 88不删要发
for i = #list , 1 ,-1 do
if list[i].money == 66 then
table.remove(list,i)
end
end
结果:
在偷个懒,上面可以看出money = 66 已经被删除了,需要注意,来进行table.remove 操作时,需要从后往前倒序遍历,至于为什么那就是有坑,不信邪的可以试试.
4、table.concat()
可以把table的数组部分拼接成字符串
local list =
{
{id = 1, money = 121, level = 30},
{id = 2, money = 66, level = "现在"},
{id = 3, money = 66, level = 21},
{id = 4, money = 88, level = 66},
{id = 5, money = 88, level = 66}
}
for i = 1,#list do
local getRich = table.concat({list[1].money, "发", "大财",list[2].level, i == 1 and "开启" or "启动"})
end
结果:
意思就是这个意思拼接,祝各位发大财.
在项目中也会出现需要再好几个表取数据的,这时候就先要插入在排序了。
最后要注意 table.insert() table.remove() 只适用于数组型table的增删,不信的也可以试一下.
888、lua不追求高大上的写法,简单方便即为真理
祝同道们能在工作中,乘风破浪,披荆斩棘.