这可能比我自己做起来容易。我对Lua不太陌生,但是有其他语言的经验。
我有一个看起来像这样的表:
local state = {}
state[1] = {
show = true,
changed = true,
progressType = "static",
value = 0,
total = 9,
name = "nine",
}
state[2] = {
show = true,
changed = true,
progressType = "static",
value = 0,
total = 7,
name = "seven",
}
state[3] = {
show = true,
changed = true,
progressType = "static",
value = 0,
total = 8,
name = "eight",
}
state[4] = {
show = true,
changed = true,
progressType = "static",
value = 0,
total = 6,
name = "six",
}
我需要做的是基于table[]
的值对每个table.value5
条目进行排序。我在文档中找不到任何明确表示它们不只是基本的table.sort
功能的函数,所以我发现自己有些卡住了。我是否需要通过遍历并使用排序后的数据创建新表来进行手动排序?
我在文档中找不到任何明确表示它们不只是基本table.sort的功能,所以我发现自己有些卡住。
我可能会误解您的问题,但在这种情况下table.sort
正是您所需要的:
local state = {}
state[1] = {
total = 9,
name = "nine",
}
state[2] = {
total = 7,
name = "seven",
}
state[3] = {
total = 8,
name = "eight",
}
state[4] = {
total = 6,
name = "six",
}
-- Use table.sort with a custom anonymous function
-- to specify how to compare the nested tables.
table.sort(state, function (a, b)
return a.total < b.total
end)
for i=1, #state do
print(i, state[i].name)
end
使用table.sort
,您可以提供可选的自定义功能,该功能可以像您想要的那样简单或复杂。在这种情况下(根据您的问题),只需比较表的total
值就足够了。