加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 00:21:28 所属栏目:大数据 来源:网络整理
导读:所以,我有一张这样的表: arr ={ apples = { 'a',"red",5 },oranges = { 'o',"orange",12 },pears = { 'p',"green",7 }} 它似乎不可能根据它们的索引访问它们,而值本身就是表,所以我只是把嵌套表的第一个值作为它的索引,所以现在看起来像这样: arr ={ a
所以,我有一张这样的表:
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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读