我们简单看一下pairs、ipairs以及自定义按key值顺序遍历的pairsBykeys这3中方式:
-- table表的操作
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
-- table中元素为table类型时
table_item={
[1]=25,
[150002]=15000,
[150008]={150008},
[9]='码农码农!!',
[150010]=3002,
[2]={{25,},},
}
-- table中元素为非table类型时,按照表中排列顺序进行遍历
table_item1={
1,5,6,"worker",{4},true
}
print("---pairs,根据key值的hash值进行遍历---")
for k,v in pairs(table_item) do
print(k,v)
end
print("\n---ipairs,只从key值为1处开始连续遍历---")
for k,v in ipairs(table_item) do
print(k,v)
end
print("\n---pairsBykeys,根据key值由小到大进行遍历---")
for k,v in pairsBykeys(table_item) do
print(k,v)
end
输出如下:
---pairs,根据key值的hash值进行遍历---
2 table: 00BF9230
150008 table: 00BF94D8
1 25
150010 3002
9 码农码农!!
150002 15000
---ipairs,只从key值为1处开始连续遍历---
1 25
2 table: 00BF9230
---pairsBykeys,根据key值由小到大进行遍历---
1 25
2 table: 00BF9230
9 码农码农!!
150002 15000
150008 table: 00BF94D8
150010 3002
相信大家看一遍后,便会对这3种方法的区别和用法一目了然了,接着可以试一下遍历table_item1表,看是否和注释所说的一样。