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表去重的更多相关文章
- lua序列化table表到文件中
先上代码 function luautil.serialize(t, sort_parent, sort_child) local mark={} local assign={} local func ...
- 关于 lua table表存储函数且运用
--table 是lua的一种数据结构用来帮助我们创建不同的数据类型.如:数组和字典--lua table 使用关联型数组,你可以用任意类型的值来做数组的索引,但这个值不能是nil--lua tabl ...
- lua table表
lua table表 语法结构 创建一个 table 直接使用 "{}" 即可 table1 = {} -- 赋值 table1["name"] = " ...
- lua基础【三】唯一数据结构table表
--[[ 数据结构table对象(一种动态分配的对象) lua中的表操作.table类型实现了"关联数组的". "关联数组是一种具有特殊索引方式的数组" 能够通 ...
- Cocos2d-x 脚本语言Lua基本数据结构-表(table)
Cocos2d-x 脚本语言Lua基本数据结构-表(table) table是Lua中唯一的数据结构.其它语言所提供的数据结构,如:arrays.records.lists.queues.sets等. ...
- Lua 学习之基础篇四<Lua table(表)>
table 是 Lua 的一种数据结构用来帮助我们创建不同的数据类型,如:数组.字典等. Lua table 使用关联型数组,你可以用任意类型的值来作数组的索引,但这个值不能是 nil. Lua ta ...
- [lua]紫猫lua教程-命令宝典-L1-01-07. table表
L1[table]01. table表的定义与赋值 小知识:声明表的例子 xx={}--创建一个空表xx --给这表的元素赋值 test="a" xx[test]="a& ...
- Lua table(表)
table 是 Lua 的一种数据结构用来帮助我们创建不同的数据类型,如:数组.字典等. Lua table 使用关联型数组,你可以用任意类型的值来作数组的索引,但这个值不能是 nil. Lua ta ...
- lua的table表处理 及注意事项
lua,一款很轻量级很nice很强大的脚本语言,做为lua中使用最为频繁的table表,在使用之时还是有颇多的好处与坑的: 下面是大牛 云风的一片关于lua table的blog,可使得对lua ta ...
随机推荐
- Linux文件目录和访问权限
前言 本文知识点是曾经学习过程中收录整理的,方便学习使用,并非在下撰写. 一>Lniux目录结构 /:根目录,一般根目录下只存放目录,在Linux下有且只有一个根目录.所有的东西都是从这里开始. ...
- SpringCloud 入门(三)
前文我们介绍了简单的创建一个客户端,并介绍了它是如何提供服务的,接下来介绍它的另外一个组件:zuul. zuul 提供了微服务的网关功能,通过它提供的接口,可以转发不同的服务,可以当作一个中转站. 搭 ...
- StringEscapeUtils防止xss攻击详解
StringUtils和StringEscapeUtils这两个实用类. 1.转义防止xss攻击 1.转义可以分为下面的几种情况 第一用户输入特殊字符的时候,在提及的时候不做任何处理保持到数据库,当用 ...
- JavaScript 格式化数字、金额、千分位、保留几位小数、舍入舍去…
JavaScript 格式化数字.金额.千分位.保留几位小数.舍入舍去… 类库推荐 1. Numeral.js 一个用于格式化和操作数字的JavaScript库.数字可以被格式化为货币,百分比,时间, ...
- python的常用魔法方法详细总结
构造和初始化 __init__我们很熟悉了,它在对象初始化的时候调用,我们一般将它理解为"构造函数". 实际上, 当我们调用x = SomeClass()的时候调用,__init_ ...
- Jmeter系列(32)- 详解 CSV 数据文件设置
如果你想从头学习Jmeter,可以看看这个系列的文章哦 https://www.cnblogs.com/poloyy/category/1746599.html 了解一哈什么是 CSV 文件 为了实现 ...
- .NET Core下开源任务调度框架Hangfire
今天无意中发现了一个很好用的任务调度框架.Hangfire作为一款高人气且容易上手的分布式后台执行服务,支持多种数据库.在 .net core的环境中,由Core自带的DI管理着生命周期. 相较于qu ...
- js页面跳转的问题(跳转到父页面、最外层页面、本页面)
"window.location.href"."location.href"是本页面跳转 "parent.location.href"是上一 ...
- bash默认组合按键
组合按键 运行结果 Ctrl + C 终止目前的命令 Ctrl + D 输入结束 (EOF),例如邮件结束的时候: Ctrl + M 就是 Enter 啦! Ctrl + S 暂停屏幕的输出 Ctrl ...
- Volatile关键字的解读
原子性 定义: 在Java中,对基本数据类型的变量的读取和赋值操作是原子性操作,即这些操作是不可被中断的,要么执行,要么不执行. Java内存模型只保证了基本读取和赋值是原子性操作,如果要实现更大范围 ...