Проблемы с сортировкой этой таблицы Lua
У меня есть таблица 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
Но это не отображает отсортированные значения.
Любая помощь будет оценена, спасибо.
1 ответ
Решение
Если вы можете контролировать свою структуру, создайте таблицу следующим образом:
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
а затем использовать table.sort
функция с той же логикой, что и выше в этой локальной таблице t
,