zoukankan      html  css  js  c++  java
  • Lua 多维表的遍历中的赋值

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

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

    Data={
        [102]={p1=1,pa={1,2,3}},
        [103]={p1=2,pa={2,3,4}},
        [105]={p1=4,pa={3,4,5}}
    }

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

     1 -- 使用table.insert方法插入到新表中
     2 for k,v in pairs(Data) do
     3     print(k,v)
     4     Data2[k]={};
     5     table.insert(Data2[k],v.pa);
     6 end
     7 for k,v in pairs(Data2) do
     8     print(k,v)
     9     for k2,v2 in pairs(v) do
    10         print(k,v2)
    11     end
    12 end

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

    1 Data2= {
    2     102={1={1=1,2=2,3=3,},},
    3     103={1={1=2,2=3,3=4,},},    
    4     105={1={1=3,2=4,3=5,},},
    5 }

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

    for k,v in pairs(Data) do
        print(k,v)
        Data3[k]=v.pa;    
    end
    -- print 
    Data3={
            102={1=1,2=2,3=3,},
            103={1=2,2=3,3=4,},
            105={1=3,2=4,3=5,},
          }        

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

  • 相关阅读:
    day10
    day 9
    day 8
    flex布局
    简单的todolist的demo
    JS中数组与对象的遍历方法实例小结
    css中animation和@keyframes 动画
    form表单相关
    Restful API接口规范
    什么是接口文档,如何写接口,有什么规范?
  • 原文地址:https://www.cnblogs.com/asheCoder/p/3912251.html
Copyright © 2011-2022 走看看