Извлечение нескольких ключей из таблицы с наименьшими целочисленными значениями - PullRequest
0 голосов
/ 14 апреля 2020

Я создал такую ​​таблицу

TableAlpha = {
  Alpha = 3648,
  Beta = 6593,
  Charlie = 2358,
  Delta = 6483,
  Echo = 4736
}

Мне интересно, как я могу извлечь 3 ключа с самыми низкими значениями внутри таблицы?

1 Ответ

2 голосов
/ 14 апреля 2020
local TableAlpha = {
   Alpha = 3648,
   Beta = 6593,
   Charlie = 2358,
   Delta = 6483,
   Echo = 4736
}

--- Returns the keys of tab sorted numerically by their values
local function ascending(tab)
   local list = {}
   for key, integer in pairs(tab) do
      table.insert(list, {integer, key})
   end
   table.sort(list, function(left, right) return left[1] < right[1] end)
   for i, tuple in ipairs(list) do
      list[i] = tuple[2]
   end
   return list
end

local unpack = unpack or table.unpack or error("Could not find an unpack function!")

print(unpack(ascending(TableAlpha), 1, 3))
...