Sorting 排序此Lua表时出现问题
我有一个Lua表格,格式如下:Sorting 排序此Lua表时出现问题,sorting,lua,lua-table,Sorting,Lua,Lua Table,我有一个Lua表格,格式如下: tTest = {} tTest.word1 = { IsOnline = true, UpdateTime = 2, Value = 150 } tTest.word2 = { IsOnline = true, UpdateTime = 1,
tTest = {}
tTest.word1 = {
IsOnline = true,
UpdateTime = 2,
Value = 150
}
tTest.word2 = {
IsOnline = true,
UpdateTime = 1,
Value = 25
}
tTest.word3 = {
IsOnline = true,
UpdateTime = 1,
Value = 1000
}
我想先用最大值遍历这个表。所以我试过这个
for k,v in pairs(tTest, function(a,b) return a.Value > b.Value end) do
print (v.Value)
end
但它没有显示排序的值
感谢您的帮助。如果您可以控制您的结构,请将表格设计为:
tTest = {
{
"word1",
IsOnline = true,
UpdateTime = 2,
Value = 150
},
{
"word2",
IsOnline = true,
UpdateTime = 1,
Value = 25
},
{
"word3",
IsOnline = true,
UpdateTime = 1,
Value = 1000
}
}
现在,您可以将表格排序为:
table.sort( tTest, function(u,v) return u.Value > v.Value end )
如果无法控制源表;创建临时表:
local t = {}
for k, v in pairs(tTest) do
t[ #t + 1 ] = v
table.insert(t[#t], k)
end
然后使用
表。在本地表上使用与上述逻辑相同的sort
函数t
可能重复的感谢,我选择创建临时表选项,因为我会对其他一些代码进行一些重要的重写,以使用我的表的更改结构。我还注意到,我错误地认为排序函数是pairs()参数,而不是table.sort()函数。我现在一切都好了。还有一个问题,是否也可以按键对我的表结构进行排序?@Wallboy您仍然需要创建临时表,并在表中使用适当的逻辑。sort
回调。代替u.Value>v.Value
,它应该是:u[1]>v[1]
。@Wallboy这是另一个问题,但请看这个。@hjpotter92 u[1]>v[1]非常适合按键排序!谢谢我还注意到,我可以在表中添加另一个与键具有相同值的字段,然后按该字段排序。但是既然u[1]>v[1]工作得很好,我就用它。再次感谢!