数组 – 如何遍历Lua中的表?

前端之家收集整理的这篇文章主要介绍了数组 – 如何遍历Lua中的表?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
所以,我有一张这样的表:
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

猜你在找的Lua相关文章