Lua基础操作<table库函数>

前言:本文主要介绍项目中常用的四种函数。

        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不追求高大上的写法,简单方便即为真理

祝同道们能在工作中,乘风破浪,披荆斩棘.

  • 16
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

弈笙a

想给我一巴掌的先给个糖吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值