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])