lua中table的遍历,以及删除

lua中table的遍历,以及删除,第1张

概述Lua 内table遍历 在lua中有4种方式遍历一个table,当然,从本质上来说其实都一样,只是形式不同,这四种方式分别是: 1. ipairs for index, value in ipairs(table) do end 注:这种方式的遍历只会从key为1的地方开始,一直以key递增1的顺序来遍历,若找到一个递增不是1的key就结束遍历,无论后面是否仍然是顺序的key。 1 --Sam

Lua 内table遍历

在lua中有4种方式遍历一个table,当然,从本质上来说其实都一样,只是形式不同,这四种方式分别是:

1. ipairs

for index,value in ipairs(table) do

end

注:这种方式的遍历只会从key为1的地方开始,一直以key递增1的顺序来遍历,若找到一个递增不是1的key就结束遍历,无论后面是否仍然是顺序的key。

 1 --Sample_1: 2 local tab1 =  3 { 4 [1] = 1, 5 [2] = 2, 6 [3] = 3, 7 [4] = 4, 8 } 9 for key,value in ipairs(tab1) do10   print(value)    -->1 2 3 411 end
--Sample_2:local tab2 = {    [1] = 1,[2] = 2,[3] = 3,[5] = 5,[6] = 6,}for key,value in ipairs(tab2) do    print(value)    -->1 2 3end
--Sample_3:local tab3 = {    [2] = 2,[4] = 4,value in ipairs(tab3) do    print(value)    -->没有打印end

2. pairs

for key,value in pairs(table) do

end

这种方式的遍历是根据table中key的hash值排列的顺序来遍历,并非是table中key的排列顺序,并且不关心key是否从1开始和key是否以1递增。

--Sample_1:local tab1 = {    [1] = 1,} for key,value in pairs(tab1) do    print(value)    -->1 2 4 3end
--Sample_2:local tab2 = {    [1] = 1,value in pairs(tab2) do    print(value)    -->6 2 3 1 5end
--Sample_3:local tab3 = {    ["1"] = 1,["2"] = 2,["3"] = 3,["5"] = 5,["6"] = 6,value in pairs(tab3) do    print(value)    -->1 3 2 5 6end

3. #table

for i=1,#(table) do

end

注:这种方式的遍历关键的地方在于获取table的大小,#(table)只会从key为1的地方开始,一直以key递增1的顺序来遍历,若找到一个递增不是1的key就结束遍历并且返回table的大小,无论后面是否仍然是顺序的key。

--Sample_1:local tab1 = {    [1] = 1,} print("#table:"..#(tab1))        -->4for i = 1,#(tab1) do    print(tab1[i])    -->1 2 3 4end --Sample_2:local tab2 = {    [1] = 1,} print("#table:"..#(tab2))    -->3for i = 1,#(tab2) do    print(tab2[i])end--Sample_3:local tab3 = {    [2] = 2,} print("#table:"..#(tab3))    -->0for i = 1,#(tab3) do    print(tab3[i])    -->没有打印end

4. table.maxn(table)

  这种方式的遍历和第三种方式差不多,关键的地方是在table.maxn(table),table.maxn(table)的意思是获取table中最大值的key。 

local tab2 = {    [1] = 1,["a"] = 4,} print("table.maxn:"..table.maxn(tab2))    -->6for i = 1,table.maxn(tab2) do    print(tab2[i])    -->1 2 3 nil 5 6end
--Sample_2:local tab3 = {    [2] = 2,} print("table.maxn:"..table.maxn(tab3))    -->4for i = 1,table.maxn(tab2) do    print(tab3[i])    -->nil 2 3 4 nil nilend

Lua table移除某一项,或多项内容

  有两种方式来移除table中的数据

1. 按下标来移除

  table.remove(table_name,[pos,])
  直接移除某个下标的数据,例如:

local t = {5,6,7,8}table.remove(t,2)for k,v in pairs(t) do    print(k,v)end输出1     52     73     8
2.将某项值置空   table[k] = nil  直接将某项值置空

  

local a = {    [3019] = 3019,[3020] = 3020,[3021] = 3021,[3017] = 3017}a[3019] = nilfor k,v in pairs(a) do    print(k,v)end输出:3020    30203017    30173021    3021
总结

以上是内存溢出为你收集整理的lua中table的遍历,以及删除全部内容,希望文章能够帮你解决lua中table的遍历,以及删除所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1231617.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存