Как получить ключ значения с помощью индекса - PullRequest
0 голосов
/ 22 марта 2020

Как получить ключ из табличного значения, используя индекс, например:

local myTable = {
Mary = 1000,
Bob = 2000,
Fred = 3000}

local keyAtIndex1 = myTable[1] ??? --- should return "Mary"
local keyAtIndexTwo = myTable[2] ??? --- should return "Bob"

Существует ли предварительно созданный метод или свойство?

В настоящее время я делаю это ;

function tableGetKeyFromValue(_table, _value)
  for k,v in pairs(_table) do
if v==_value then return k end
  end
 return nil
end

Есть ли лучший способ?

1 Ответ

1 голос
/ 22 марта 2020

Ключи в таблицах Lua не имеют индексов; они являются индексами. Ключи в таблицах Lua не упорядочены, поэтому вы не можете получить их при некотором упорядочении.

Кроме того, нет механизма извлечения ключей по их значению. Карта идет только одним путем: от ключей к значениям. Если вы хотите иметь сопоставление значений и ключей, вы можете создать отдельную таблицу, в которой достаточно легко хранится это сопоставление.

Однако не будет ничего, чтобы синхронизировать эти две таблицы c друг с другом. Это хорошо, если стол более или менее стати c.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...