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 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM