Lua 多维表的遍历中的赋值

  说到Lua的遍历将要使用到循环;先说遍历再说循环;

  遇到这样类似结构的一个table

Data={
[]={p1=,pa={,,}},
[]={p1=,pa={,,}},
[]={p1=,pa={,,}}
}

  目的获得key 值与pa的一个表,实现下

 -- 使用table.insert方法插入到新表中
for k,v in pairs(Data) do
print(k,v)
Data2[k]={};
table.insert(Data2[k],v.pa);
end
for k,v in pairs(Data2) do
print(k,v)
for k2,v2 in pairs(v) do
print(k,v2)
end
end

  但是,结果并不如人意;这样实现的结果是将表复杂化了。此时遍历出表的结构为:

 Data2= {
={={=,=,=,},},
={={=,=,=,},},
={={=,=,=,},},
}

  这不是我要的pa,要改变现状;

for k,v in pairs(Data) do
print(k,v)
Data3[k]=v.pa;
end
-- print
Data3={
={=,=,=,},
={=,=,=,},
={=,=,=,},
}

  为了这个循环结果我浪费了近一天时间;有点笨了,呵呵;当时没有想到,只为了使用查询遍历找到匹配的数据;最初使用的循环还是ipairs,没有输出结果,再然后才晓得ipairs与pairs的区别,ipairs的遍历条件更加苛刻,只能遍历数组类的表,遇到nil值 就会退出。所以ipairs 只适于一些结构以及数据相对简单且key最好从1开始,很注重顺序;对于pairs就随意得多,可以将任意表无序遍历。

上一篇:用spring boot 2从零开始创建区块链


下一篇:Oracle笔记 多表查询