Проблемы с сортировкой этой таблицы 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,

Другие вопросы по тегам