lua 遍历 table

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  


你可能感兴趣的:(table,lua)