如何以表格里的第二个值为标准排序表格,之后返回第一个值?

我想对这里的表格按照第二个值进行排序,然后返回第一个字符串。如何最好地做到这一点?如果我的解释不好,请谅解,我是编程新手。

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]
点赞
用户2858170
用户2858170

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

function ()

你需要在函数体后面放置一个 end 以避免语法错误。

此外,这本身不会做任何有用的事情,因为你正在定义匿名函数。除非你将其分配给一个值,否则它将没有任何效果。

所以你应该做类似于

function myFunction() endmyFunction = function () end

然后你创建了 4 个全局表 t1t2t3t4。你将它们放入另一个全局表 tTable 中。

应该在可能的情况下使用局部变量。

然后你尝试对表进行排序 table.sort(tTable[tTable][2])

tTable[tTable]nil。你没有为键值 tTable 添加任何值到 tTable 中。因此 tTable[tTable][2] 会导致错误,因为你尝试对空值进行索引。即使有这样的东西,它可能也不会是一个表,这将导致错误,因为 table.sort 需要一个表。

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

个人建议在尝试对表进行排序之前学习更多基础知识。要使用表,必须知道如何将值分配和获取到它们。要获取自定义排序,你需要知道如何定义函数。这两点都不是你的情况。

现在来解决排序问题:

请参考 Lua 参考手册

在那里,你将学习到可以提供一个函数,告诉 Lua 两个元素中哪一个先出现。

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

将按其元素的第二个值升序排序 tTable

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])
2021-03-14 07:58:55