所以,我有一张这样的表:
arr = { apples = { 'a',"red",5 },oranges = { 'o',"orange",12 },pears = { 'p',"green",7 } }
它似乎不可能根据它们的索引访问它们,而值本身就是表,所以我只是把嵌套表的第一个值作为它的索引,所以现在看起来像这样:
arr = { apples = { 0,'a',oranges = { 1,'o',pears = { 2,'p',7 } }
所以,现在任何时候我使用这些表之一,我知道索引是什么,但仍然无法使用索引到表,所以我开始编写一个循环遍历它们的函数,并检查索引,直到它找到了正确的一个。然后我意识到…如果我不能通过它们的索引来引用它们,怎么能循环遍历它们?所以,现在我被困了我真的希望能够在大部分时间内输入arr.apples vs arr [1],但当然有必要同时进行两次。
解决方法
要迭代表中的所有键值对,您可以使用对:
for k,v in pairs(arr) do print(k,v[1],v[2],v[3]) end
输出:
pears 2 p green apples 0 a red oranges 1 o orange
编辑:请注意,Lua不保证表的关联部分的任何迭代顺序。如果要按特定顺序访问项目,请从arr检索密钥并对其进行排序。然后通过排序的键访问arr:
local ordered_keys = {} for k in pairs(arr) do table.insert(ordered_keys,k) end table.sort(ordered_keys) for i = 1,#ordered_keys do local k,v = ordered_keys[i],arr[ ordered_keys[i] ] print(k,v[3]) end
输出:
apples a red 5 oranges o orange 12 pears p green 7