Lua基础操作<合并and去重>

前言:在项目中可能会遇到两个表或者服务器数据和本地数据多次合并产生重复值的问题,今天就来说一下应该怎样来操作。话术太累怎么方便怎么说了.

1、合并and去重

首先在策划 lua 表写个方法便于取数据

------假设这是本地策划表
	---模拟爬塔每层有不同的buff效果
	local buffList = 
	{
		{id=1001, title="第一层",  buff={6688}},
		{id=1002, title="第二层", buff={5588,3388}}	
	}
	
	---根据传的id获取id列表的buff  可写在策划lua表中
	function GetLBuffList(id)
		local listBuff = {}
		for i, v in pairs(buffList) do
			if v.buff ~= nil then
				if v.id == id then
					listBuff = v.buff
				end
			end
		end
		return listBuff
	end

就算传入的id 是 1002

一般方法名为 表名_*_*避免重复

老规矩截图数据listBuff:

下面假设在需要操作的脚本

----正文   假设这是另一个脚本 开始合并去重
	function HellBuffInfoMessage()
		--假设这是请求到的服务器信息
		local buffId = nil
		local serverBuffInfo =
		{
			{id=1001,mapId=1001,buffId={1888}},
			{id=1002,mapId=1002,buffId={5888}}
		}
		for k,v in pairs(serverBuffInfo) do --默认 1002   项目中可以获取当前层
			if v.mapId == 1002 then
				buffId = v.buffId
			end
		end
		
		
		
		---传入当前楼层id获取当前层的buff列表
		local open = cfg_hellKing_GetLayersBuff(1002)
		local cfg = {}
		--遍历,取出buffid
		for k,v in pairs(open) do
			table.insert(cfg,v)
		end
		--在本地buff中插入服务器随机buff
		table.insert(cfg,buffId)
		
		local table2={}
		for key,val in pairs(cfg) do--键的唯一性
			table2[val]=true
		end
		--保存最终结果
		local table3={}
		for key,val in pairs(table2) do
			table.insert(table3,key)--将key插入到新的table,构成最终的结果
		end
	end

上方 table3则是最终去重结果

背景故事:因为写在消息回调中,每次请求都会重复赋值插入,当然有很多办法可以避免,不过现在是举例去重,噢耶.

这里主要是用了键的唯一性,刚开始可以不理解,不过一定要会带入,以备不时只需,避免加班熬夜.

如果后面再需要什么服务器的随机buff排前面或者本地常驻buff排前面就需要用到table库函数的 table.sort 排序了.下方直达车 table库函数

http://t.csdnimg.cn/Olpfm

有问题可以留言或者评论,哪方面不对敬请指教,自当勉励.

lua不追求高大上的写法,简单方便即为真理

愿各位同道能不加班不熬夜。不掉发

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

弈笙a

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

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

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

打赏作者

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

抵扣说明:

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

余额充值