Lua table 顺序遍历

在Lua中, 如何遍历一个Table元素,主要有两种类型:

  • 1.pairs:下标从1开始,并且是连续的才可以使用
  • 2.ipairs:是无序的
    示例

     
       
    1. local t = {
    2. [10] = 1,
    3. [20] = 2,
    4. [30] = 3,
    5. [40] = 4,
    6. [50] = 5,
    7. [60] = 6
    8. }
    9. for k,v in pairs (t) do
    10. print("t1", k, v)
    11. end
    12. for k,v in ipairs (t) do
    13. print("t2", k, v)
    14. end

打印结果:
282130599402218.png

可以发现,使用ipairs的结果根本就没有打印出来,因为ipairs是从1开始打印的,
那像这种不是从1开始的, 又想要顺序打印要怎么做呢!
这时候需要借助另外一个表,原理类似于这样子

 
 
  1. local temp = {
  2. [1] = k1,
  3. [2] = k2,
  4. [3] = k3,
  5. [4] = k4,
  6. [5] = k5
  7. }

其中k1,k2...k5分别代表 t中的下标值(10,20,......60)
只要做到这个, 就可以用ipairs遍历temp,从而得到相对应的t了。

这里在《program in lua》中已经有现在代码可以使用了,

 
 
  1. function pairsByKeys(t)
  2. local a = {}
  3. for n in pairs(t) do a[#a + 1] = n end
  4. table.sort(a)
  5. local i = 0
  6. return function ()
  7. i = i + 1
  8. return a[i], t[a[i]]
  9. end
  10. end

改变以前的遍历代码为以下,其实就是pairs改为 pairsBykeys

 
 
  1. for k,v in pairs (t) do
  2. print("t1", k, v)
  3. end
  4. print("___________________")
  5. for k,v in Utils.pairsByKeys (t) do
  6. print("t2", k, v)
  7. end

282131018944887.png

打印如下,可以看到, 下面一排的打印结果已经是有序的了!





转载于:https://www.cnblogs.com/chenhaobright/p/293bed5a3fded628b3b27e6b9252d2ff.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值