lua pairs顺序遍历 table(key必须为连续数值)

Lua常用的4中遍历方式

for key, value in pairs(tbtest) do      
    XXX  
end  


这样的遍历顺序并非是tbtest中table的排列顺序,而是根据tbtest中key的hash值排列的顺序来遍历的。


for key, value in ipairs(tbtest) do      
    XXX  
end  


 这样的循环必须要求tbtest中的key为顺序的,而且必须是从1开始,ipairs只会从1开始按连续的key顺序遍历到key不连续为止。


for i=1, #(tbtest) do      
    XXX  
end  


这种遍历,只能遍历当tbtest中存在key为1的value时才会出现结果,而且是按照key从1开始依次递增1的顺序来遍历,找到一个递增不是1的时候就结束不再遍历,无论后面是否仍然是顺序的key


for i=1, table.maxn(tbtest) do      
    XXX  
end
这种效率太低了

推荐的方法:

 

 --迭代器
function pairsByKeys(t)      
    local a = {}      
    for n in pairs(t) do          
        a[#a+1] = n      
    end      
    table.sort(a)      
    local i = 0      
    return function()          
    i = i + 1          
    return a[i], t[a[i]]      
    end  
end


for key, value in pairsByKeys(tbtestAward) do      
 if nSeq <= key then          
  return key      
 end 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Lua中的table是一种非常重要的数据结构,可以用来存储和组织数据。在Lua中,table可以被看作是一种关联数组,它可以通过任意类型的值作为索引来访问和操作其中的元素。 在Lua中,我们可以使用不同的方式来循环遍历table的元素。下面是几种常见的循环方式: 1. 使用pairs函数循环遍历table的键值对: ```lua local myTable = {key1 = value1, key2 = value2, key3 = value3} for key, value in pairs(myTable) do print(key, value) end ``` 这种方式会遍历table中所有的键值对,并将键和值分别赋值给变量key和value。 2. 使用ipairs函数循环遍历table的数组部分: ```lua local myTable = {"apple", "banana", "orange"} for index, value in ipairs(myTable) do print(index, value) end ``` 这种方式适用于table中只包含连续整数作为索引的情况,它会遍历数组部分,并将索引和对应的值分别赋值给变量index和value。 3. 使用数字索引循环遍历table: ```lua local myTable = {10, 20, 30} for i = 1, #myTable do print(i, myTable[i]) end ``` 这种方式适用于table中只包含连续整数作为索引的情况,通过指定起始索引和结束索引的方式来循环遍历table。 4. 使用迭代器函数循环遍历table: ```lua local myTable = {key1 = value1, key2 = value2, key3 = value3} for key, value in pairs(myTable) do print(key, value) end ``` 这种方式使用了Lua中的迭代器函数,可以自定义遍历table的方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值