Lua多次元テーブルの遍歴における付与

5879 ワード

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つのテーブルを獲得して、実現します
 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の場合は、任意のテーブルを無秩序に遍歴することができます.