Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting 排序此Lua表时出现问题_Sorting_Lua_Lua Table - Fatal编程技术网

Sorting 排序此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,

我有一个Lua表格,格式如下:

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]工作得很好,我就用它。再次感谢!