Lua——嵌套表排序的小坑

最近实习接到一个对道具进行排序的任务,对lua了解不深,刚开始犯了点傻;
Lua自带table排序我们可以自定义排序函数,但只支持下标为整型的数组table,所以遇到嵌套table,键值对这种用另一种方法解决;

数组排(只支持下标为整型的table)

require "TableUtil";

myTable = {
	[1] = "abc",
	[2] = "sfsfa",
	[3] = "z451"
}

local function sortFunc(a, b)
	return a > b;
end

table.sort( myTable, sortFunc);

print(TableUtil.TableToString(myTable))
[1] = "z451",
[2] = "sfsfa",
[3] = "abc",
[Finished in 0.0s]

键值对排(把原始table转换成数组table)

require "TableUtil";

myTable = {
	["easy"] = {
		level = 20
	},
	["hard"] = {
		level = 5
	},
	["normal"] = {
		level = 10
	}
}

local tempList = {}

for _, v in pairs(myTable) do
	table.insert(tempList, v);
end

local function sortFunc(a, b)
	return a.level > b.level;
end

table.sort( tempList, sortFunc);

print(TableUtil.TableToString(tempList))
[1] = {
    ["level"] = 20,
},
[2] = {
    ["level"] = 10,
},
[3] = {
    ["level"] = 5,
},
[Finished in 0.1s]
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值