luatable 转java_lua的table表去重

方法一

用过lua的人都知道,lua的table中不允许存在相同的key,利用这个思想,我们可以将原始table(记作table1),用一个新的table(记作table2)来存放,存放得时候将table1的value作为table2得key,将值赋为true,最后只需要遍历table2,将其的key保存在一个新的table(记作table3)里。

例如:原始table1={1,2,3,4,5,2,3}

local table1={1,2,3,4,5,2,3}

local table2={}

for key,val in pairs(table1) do

table2[val]=true

end

local table3={}

for key,val in pairs(table2) do

table.insert(table3,key)--将key插入到新的table,构成最终的结果

end

方法二

local list={1,2,3,4,5,2,3}

local temp1 = clone(list)

local temp2 = clone(list)

for k1, v1 in ipairs(temp1) do

for k2, v2 in ipairs(temp2) do

if v1 == v2then

table.remove(temp1, k1)

table.remove(temp2, k1)

end

end

end

拓展:移除table中数据里具有某个相同字段的数据,例如,table如下:需移除具有相同value相同的数据

local list={}

list[1]={id=10001,sid=1001,value=5}

list[2]={id=10002,sid=1001,value=3}

list[3]={id=10003,sid=1001,value=4}

list[4]={id=10004,sid=1001,value=5}

利用方法二拓展本功能:

local list={}

list[1]={id=10001,sid=1001,value=5}

list[2]={id=10002,sid=1001,value=3}

list[3]={id=10003,sid=1001,value=4}

list[4]={id=10004,sid=1001,value=5}

local temp1 = clone(list)

local temp2 = clone(list)

for k1, v1 in ipairs(temp1) do

for k2, v2 in ipairs(temp2) do

--同种英雄同一星级的移除

if v1.id ~= v2.id and v1.value == v2.value and v1.sid == v2.sid then

table.remove(temp1, k1)

table.remove(temp2, k1)

end

end

end

标题:lua的table表去重

作者:shirln

地址:https://www.mmzsblog.cn/articles/2020/07/28/1595904145598.html

-----------------------------

如未加特殊说明,此网站文章均为原创。

网站转载须在文章起始位置标注作者及原文连接,否则保留追究法律责任的权利。

公众号转载请联系网站首页的微信号申请白名单!

个人微信公众号 ↓↓↓

%E5%BE%AE%E4%BF%A1%E6%90%9C%E4%B8%80%E6%90%9C%E7%88%B1%E4%B8%8A%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91-e1eee390.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值