lua中如何按照key顺序遍历table
2018-07-16 本文已影响0人
玛玛哈哈m
pairs迭代器可以遍历table中所有key,但是key的顺序无法保证是table中的顺序
我在《Programming In Lua》中看到了一个神奇的迭代器,使用它就可以达到我想要的这种遍历方式,而且不需要去遍历那些不存在的key。它的方法是把你所需要遍历的table里的key按照遍历顺序放到另一个临时的table中去,这样只需要遍历这个临时的table按顺序取出原table中的key就可以了。如下:
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