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