该方法,只适合一些简单的表,key只包含数字或者只包含字符串的简单数组,但是思路都是差不多的。下面介绍两种方式,第一种:主要方法:table.sort(_table)
table.sort(_table,function(a,b) return a.id<b.id end) –“升序 <” “降序 >”,a和b是代表table里面的值,比如_table = {[1] = {[“id”] = 1,[“name”] = “xiao”},[2] = {[“id”] = 2,[“name”] = “ming”}},那么a = _table[1],b = _table[2].
注意:这个有个坑,sort它的key需要从【1】开始,所以有时候用下面这个方法更好。
下面是lua去除表内重复元素,网上看了很多方法,有时候不需要那么复杂,(有更好的方式,请一定要跟我说一下。这个方法只适合小数据操作)。
需求是将100条数据,把相同的奖励按照区间的方式显示出来,“4-10,11-30……”,下面是数据部分截图:
思路是直接比较reward数据内容(也可以取出{}内的数值进行比较,但是比较繁琐,这里直接比较两个值。)
下列是方法:
得到最后的结果:
第二种,下面是比较常用的方法
function Testtable:DeleteTheSameElement(table)
local exist = {}
--把相同的元素进行覆盖掉
for v, value in pairs(table) do
exist[value] = true --value进行保存 当成一个key
end
--重新排序表
local newTable = {}
for v, k in pairs(exist) do
table.insert(newTable, v)--这里的v就相当于上面的value
end
return newTable --返回已经去重的表
end