用pairs就是没顺序,随机的,跟k的哈希值有点关系。
t={1,2,3,4,5,6,7,8,9}--必须是这样的table,元素必须要要用table.insert插入,用ipairs遍历,这种table相当于t[1]=1,t[2]=2...t[9]=9,如果后面有个t[11]=11,那么用ipairs就遍历不到。原因是table里面分两部分,数组和hash表,t[1],t[2]等连续的是相当于数组部分,不连续的索引都放hash表里了,顺序不一定。
str = ""
for i,v in ipairs(t) do
str = str..v..","
end
print(str)
正如楼上所说的
只有按照从1开始的自然数排列的表才能按顺序输出 否则就没办法了
所以我们这里要创建一个表,用来做key的排序,再根据这个表输出原来的顺序
key = {}
for i in pairs(t) do
table.insert(key,i)
end
table.sort(key)
for i,v in ipairs(key) do
print(t[v])
end
-----------以上是按照key的顺序排列------------
如果要按照值的排列的话 一个道理
key = {}
for i in pairs(t) do
table.insert(key,i)
end
table.sort(key,function(v1,v2) return t[v1] < t[v2] end)
for i,v in ipairs(key) do
print(t[v])
end
不过 如果按照你给的例子来说 按值排列和按key排列是看不出结果的差异