Lua 按表的第二个值对表进行排序,然后返回第一个值的最佳方法是什么?

Lua 按表的第二个值对表进行排序,然后返回第一个值的最佳方法是什么?,lua,Lua,我想按第二个值对这里的表进行排序,然后返回第一个字符串。最好的方法是什么?抱歉,如果我的解释不好,我对编码非常陌生 function () t1 = {"Table1", 1011} t2 = {"Table2", 20222} t3 = {"Table3", 303333} t4 = {"Table4", 4044} tTable = {t1, t2, t3, t4} table.sort(tTable[t

我想按第二个值对这里的表进行排序,然后返回第一个字符串。最好的方法是什么?抱歉,如果我的解释不好,我对编码非常陌生

function ()
 t1 = {"Table1", 1011}
 t2 = {"Table2", 20222}
 t3 = {"Table3", 303333}
 t4 = {"Table4", 4044}
tTable = {t1, t2, t3, t4}
table.sort(tTable[tTable][2])
return tTable[#tTable][1]

首先,让我们看看你在做什么:

function ()
您需要在函数体后面加一个
end
,以避免语法错误

此外,在定义匿名函数时,它本身也不会做任何有用的事情。 除非将其指定给一个值,否则它将无效

所以你应该做一些类似的事情

function myFunction()end
myFunction=function()end

然后创建4个全局表
t1
t2
t3
t4
。 您将它们放入另一个全局表
tTable

您应该尽可能使用局部变量

然后尝试在
table.sort(tTable[tTable][2])

tTable[tTable]
nil
。您从未为键
tTable
tTable
添加值。 因此,
tTable[tTable][2]
将导致错误,因为您试图索引一个nil值。 即使存在这样的情况,也可能不是一个会导致错误的表,因为
table.sort
需要一个表

return tTable[#tTable][1]
将返回
tTable
最后一个元素的第一个元素,即
tTable[4][1]
t4[1]
表4

就个人而言,我建议您在尝试对表进行排序之前学习更多的基础知识。 要使用表,您必须知道如何向表分配值和从表中获取值。要获得自定义排序,您需要知道如何定义函数。事实并非如此

现在谈谈排序问题:

参考

在这里,您将了解到,您可以提供一个函数,告诉Lua两个元素中哪一个先到

table.sort(tTable, function(a,b) return a[2] < b[2] end)

这回答了你的问题吗?
local tTable = {
  {"Table1", 1011},
  {"Table2", 20222},
  {"Table3", 303333},
  {"Table4", 4044},
}
table.sort(tTable, function(a,b) return a[2] < b[2] end)
print(tTable[1][1])