首页 > 代码库 > Lua table 顺序遍历
Lua table 顺序遍历
在Lua中, 如何遍历一个Table元素,主要有两种类型:
- 1.pairs:下标从1开始,并且是连续的才可以使用
2.ipairs:是无序的
示例local t = {
[10] = 1,
[20] = 2,
[30] = 3,
[40] = 4,
[50] = 5,
[60] = 6
}
for k,v in pairs (t) do
print("t1", k, v)
end
for k,v in ipairs (t) do
print("t2", k, v)
end
打印结果:
可以发现,使用ipairs的结果根本就没有打印出来,因为ipairs是从1开始打印的,
那像这种不是从1开始的, 又想要顺序打印要怎么做呢!
这时候需要借助另外一个表,原理类似于这样子
local temp = {
[1] = k1,
[2] = k2,
[3] = k3,
[4] = k4,
[5] = k5
}
其中k1,k2...k5分别代表 t中的下标值(10,20,......60)
只要做到这个, 就可以用ipairs遍历temp,从而得到相对应的t了。
这里在《program in lua》中已经有现在代码可以使用了,
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
改变以前的遍历代码为以下,其实就是pairs改为 pairsBykeys
for k,v in pairs (t) do
print("t1", k, v)
end
print("___________________")
for k,v in Utils.pairsByKeys (t) do
print("t2", k, v)
end
打印如下,可以看到, 下面一排的打印结果已经是有序的了!
来自为知笔记(Wiz)
Lua table 顺序遍历
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。