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

在Lua表中,如何在嵌套情况下(从JSON源)找到特定值的键?

[{"Code": "AF", "Name": "阿富汗"},
{"Code": "AL", "Name": "阿尔巴尼亚"},
...
]

例如,我可以使用table[2]["Name"]来获取"阿尔巴尼亚",但是如何通过指定"阿尔巴尼亚"来获取[2]呢?

点赞
用户731620
用户731620

循环遍历数组并测试每个值:

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

你还可以将这些值作为键值对放入一个新表中,以便直接查询:

local codeFromName={}
for i,v in ipairs(table) do
    codeFromName[v.Name]=v.Code
end
2018-08-06 11:26:33
用户7665853
用户7665853
对于表中的每个元素,使用ipairs进行循环,如果匹配到字符串中包含countryName的v.Name,就打印出i的值。使用string.match而不是v.Name ==“Albania”,因为我意识到在其他情况下可能存在国家名称,但可能并不完全相同。
2018-08-06 14:28:15