连接 table 中的第一个索引连续的多项
例如
local mytable={"this","is","game"}
--不指定分隔符、开始index(默认1)、结束index(默认maxn)
print(table.concat( mytable))
--指定分隔符,不指定开始index,结束index
print(table.concat( mytable, "-"))
--指定分隔符,指定开始index,不指定结束index
print(table.concat( mytable, "-",2))
--指定分隔符,指定开始index,指定结束index
print(table.concat( mytable, "-", 1, 2 ))
输出结果
thisisgame
this-is-game
is-game
this-is
再例如
local mytable=
{
[1]="a",
[2]="b",
[3]="15",
[100]="1500",
[101]="1501"
}
print(table.concat( mytable,"-"))
a-b-15
在指定位置插入一项,如果没有指定位置,则插入到结尾
local mytable={"is","game"}
table.insert(mytable,"happly")
table.insert(mytable,"play")
table.insert(mytable,1,"this")
print(table.concat( mytable, "-"))
this-is-game-happly-play
获取table中的最大索引值
获取第一个连续索引的最大值
例如
local mytable=
{
[1]="a",
[2]="b",
[3]="15",
[100]="1500",
[101]="1501"
}
print(#mytable)
print(table.maxn(mytable))
3
101
移除指定位置的元素,如果没有指定pos,则移除第一个连续索引末尾的元素。注意元素被删除后,后面的元素会往前移。
例如
local mytable=
{
[1]="a",
[2]="b",
[3]="15",
[100]="1500",
[101]="1501",
m_name="ddddd"
}
table.remove(mytable)
for k,v in pairs(mytable) do
print(k,v)
end
1 a
2 b
m_name ddddd
100 1500
101 1501
可以看到,不指定pos,然后mytable[3]被移除了
再例如
local mytable=
{
[1]="a",
[2]="b",
[3]="15",
[100]="1500",
[101]="1501",
m_name="ddddd"
}
table.remove(mytable,1)
for k,v in pairs(mytable) do
print(k,v)
end
1 b
2 15
m_name ddddd
100 1500
101 1501
可以看到,把 mytable[1] 删除后,后面的元素前移了。
很多人习惯把 mytable[1]=nil 这样去删除一个元素,但是这样会出现问题。虽然 mytable[1]==nil,但是连续索引就断掉了。一些对于连续索引的操作就不能执行了。比如下面的例子
local mytable=
{
[1]="a",
[2]="b",
[3]="15",
[100]="1500",
[101]="1501",
m_name="ddddd"
}
mytable[1]=nil
for i,v in ipairs(mytable) do
print(i,v)
end
输出结果是:什么都没有,空的
对于不是连续索引的 其它项,我们将其置为 nil 即可,例如:
local mytable=
{
[1]="a",
[2]="b",
[3]="15",
[100]="1500",
[101]="1501",
m_name="ddddd"
}
mytable[100]=nil
for k,v in pairs(mytable) do
print(k,v)
end
1 a
2 b
3 15
m_name ddddd
101 1501
对table 进行排序,如果不指定 softfunction 排序算法,默认是升序排序
例如
local mytable=
{
1,
3,
4,
2
}
print("before : " .. table.concat( mytable,"-" ))
table.sort( mytable )
print("after : " .. table.concat( mytable,"-" ))
before : 1-3-4-2
after : 1-2-3-4
我们可以自己指定排序函数,比如我这里让它降序排序
local mytable=
{
1,
3,
4,
2
}
print("before : " .. table.concat( mytable,"-" ))
table.sort( mytable ,function( var1,var2 )
-- body
return var1>var2
end)
print("after : " .. table.concat( mytable,"-" ))
before : 1-3-4-2
after : 4-3-2-1
对索引从 1 开始的项进行遍历,索引不是数字的不参与遍历
例如
local mytable=
{
1,
[1]="this",
3,
is="is",
4,
game="game",
2
}
table.foreachi(mytable,function( k,v )
-- body
print(k,v)
end)
1 this
2 3
3 4
4 2
遍历所有项
例如
local mytable=
{
1,
[1]="this",
3,
is="is",
4,
game="game",
2
}
table.foreach(mytable,function( k,v )
-- body
print(k,v)
end)
1 this
2 3
3 4
4 2
is is
game game