Lua如何访问嵌套表中的特定数据
我将一些数据从CSV文件解析到Lua表 假设这张桌子看起来更大Lua如何访问嵌套表中的特定数据,lua,nested,lua-table,Lua,Nested,Lua Table,我将一些数据从CSV文件解析到Lua表 假设这张桌子看起来更大 tab { { id = 1761, anotherID=2, ping=pong} { id = 2071, anotherID=4, ping=notpong} } 现在我想知道每个ID(不显示任何其他数据),以便将它们存储在另一个表中一段时间 我现在在这里完全迷路了 用你写的东西,我重写了一点,然后得到: minitab = {} for i, value in ipairs(tab) d
tab {
{ id = 1761, anotherID=2, ping=pong}
{ id = 2071, anotherID=4, ping=notpong}
}
现在我想知道每个ID(不显示任何其他数据),以便将它们存储在另一个表中一段时间
我现在在这里完全迷路了
用你写的东西,我重写了一点,然后得到:
minitab = {}
for i, value in ipairs(tab) do
local id = value.id
local anotherID = value.anotherID
minitab[id] = anotherID
end
这样行吗?事实上,我后来只想得到一个更大数组的2个值(大约30个数据)——但我只能将单个数组推送到GUI下拉列表中。我想将ID保存为键,“anotherID”值将是该键后的文本,因此如果询问2071个值,它将显示“name”4下面的代码将ID作为键存储在另一个表中:
id={}
for k,v in ipairs(tab) do
id[v.id]=true
end
然后,您可以使用对遍历id
以列出id
如果要记住每个id的来源,请在循环中使用id[v.id]=k
。下面的代码将id作为键存储在另一个表中:
id={}
for k,v in ipairs(tab) do
id[v.id]=true
end
然后,您可以使用对遍历id
以列出id
如果您想记住每个id的来源,请在循环中使用id[v.id]=k
。根据您的问题,您可以使用此代码遍历数据表选项卡
,并获取用于GUI阵列的minitab
:
--data
tab = {
{id = "4204", label = "2", desc = "Roancyme"},
{id = "5517", label = "9", desc = "Bicktuft"},
{id = "1035", label = "3", desc = "Pipyalum"},
}
--temporary table
local minitab = {}
for i, option in ipairs(tab) do
minitab[option.id] = option.label
end
--print minitab
print('<select>')
for id, label in pairs(minitab) do
print(string.format('<option value="%s">%s</option>', id, label)) --> <option value="1035">3</option>
end
print('</select>')
print()
除非您在下拉列表上显示列表之前需要使用它(例如,在标签
中添加一些前缀,按标签对小标签
进行排序等);但您不想干扰原始数据表选项卡
。在这种情况下,使用临时表是有意义的
--format values in temporary table
local minitab = {}
for i, option in ipairs(tab) do
local minitabID = option.id
local minitabLabel = string.format('Item %s - %s', option.label, option.desc)
table.insert(minitab, {id = minitabID, label = minitabLabel})
end
--sort temporary table
table.sort(minitab, function (o1, o2) return o2.label > o1. label end)
--print formatted values from temporary table
print('<select>')
for i, option in ipairs(minitab) do
print(string.format('<option value="%s">%s</option>', option.id, option.label)) --> <option value="4204">Item 2 - Roancyme</option>
end
print('</select>')
——格式化临时表中的值
本地minitab={}
对于i,ipairs(选项卡)do中的选项
本地minitabID=option.id
本地minitablebel=string.format('Item%s-%s',option.label,option.desc)
insert(minitab,{id=minitabID,label=minitablebel})
结束
--排序临时表
表.排序(迷你选项卡,函数(o1,o2)返回o2.label>o1.label结束)
--打印临时表中的格式化值
打印(“”)
对于i,ipairs(minitab)中的选项do
打印(string.format('%s',option.id,option.label))-->第2项-Roancyme
结束
打印(“”)
注意:请注意哪个表迭代使用ipairs
,哪个表迭代使用对
。请参阅完整的代码片段。根据您的问题,您可以使用此代码遍历数据表选项卡
,并获取用于GUI阵列的迷你选项卡
:
--data
tab = {
{id = "4204", label = "2", desc = "Roancyme"},
{id = "5517", label = "9", desc = "Bicktuft"},
{id = "1035", label = "3", desc = "Pipyalum"},
}
--temporary table
local minitab = {}
for i, option in ipairs(tab) do
minitab[option.id] = option.label
end
--print minitab
print('<select>')
for id, label in pairs(minitab) do
print(string.format('<option value="%s">%s</option>', id, label)) --> <option value="1035">3</option>
end
print('</select>')
print()
除非您在下拉列表上显示列表之前需要使用它(例如,在标签
中添加一些前缀,按标签对小标签
进行排序等);但您不想干扰原始数据表选项卡
。在这种情况下,使用临时表是有意义的
--format values in temporary table
local minitab = {}
for i, option in ipairs(tab) do
local minitabID = option.id
local minitabLabel = string.format('Item %s - %s', option.label, option.desc)
table.insert(minitab, {id = minitabID, label = minitabLabel})
end
--sort temporary table
table.sort(minitab, function (o1, o2) return o2.label > o1. label end)
--print formatted values from temporary table
print('<select>')
for i, option in ipairs(minitab) do
print(string.format('<option value="%s">%s</option>', option.id, option.label)) --> <option value="4204">Item 2 - Roancyme</option>
end
print('</select>')
——格式化临时表中的值
本地minitab={}
对于i,ipairs(选项卡)do中的选项
本地minitabID=option.id
本地minitablebel=string.format('Item%s-%s',option.label,option.desc)
insert(minitab,{id=minitabID,label=minitablebel})
结束
--排序临时表
表.排序(迷你选项卡,函数(o1,o2)返回o2.label>o1.label结束)
--打印临时表中的格式化值
打印(“”)
对于i,ipairs(minitab)中的选项do
打印(string.format('%s',option.id,option.label))-->第2项-Roancyme
结束
打印(“”)
注意:请注意哪个表迭代使用ipairs
,哪个表迭代使用对
。请参阅完整的代码片段。对此进行了一些处理,将k,v替换为i,value-如果我现在想以minitab{1761=2,2071=4}的表格格式保存2个变量,我该怎么做?要编辑这个问题,注释代码不是很好:用它做了一些工作,用i,value替换了k,v-如果我现在想以minitab{1761=2,2071=4}的表格格式保存2个变量-我该怎么做?要编辑问题,注释代码不好:D