在嵌套情况下如何最好地找到特定值的键?

How best can I find the key of a specific value in a nested situation?

在Luatable中,如何才能最好的找到特定值的key 在嵌套情况下(在 table 之后,源自 JSON)?

[{"Code": "AF", "Name": "Afghanistan"},
{"Code": "AL", "Name": "Albania"},
...
]

比如我可以用table[2]["Name"]取"Albania",但是怎么取[2],只能指定"Albania"?

遍历数组并测试每个值:

for i,v in ipairs(table) do
    if v.Name == "Albania" then
        return v.Code
    end
end

您也可以将值作为键对放入新的 table 一次,这样您就可以直接查询:

local codeFromName={}
for i,v in ipairs(table) do
    codeFromName[v.Name]=v.Code
end
for i,v in ipairs(table) do
    if string.match(v.Name, countryName) then
        print(i)
    end
end
使用

srting.match 而不是 v.Name == "Albania",因为我意识到在其他情况下可能存在国家/地区名称,但可能不完全相同.