Lua table 順序遍歷


在Lua中, 如何遍歷一個Table元素,主要有兩種類型:

  • 1.pairs:下標從1開始,並且是連續的才可以使用
  • 2.ipairs:是無序的
    示例

       
       
       
               
    1. local t = {
    2. [10] = 1,
    3. [20] = 2,
    4. [30] = 3,
    5. [40] = 4,
    6. [50] = 5,
    7. [60] = 6
    8. }
    9. for k,v in pairs (t) do
    10. print("t1", k, v)
    11. end
    12. for k,v in ipairs (t) do
    13. print("t2", k, v)
    14. end

打印結果:

可以發現,使用ipairs的結果根本就沒有打印出來,因為ipairs是從1開始打印的,
那像這種不是從1開始的, 又想要順序打印要怎么做呢!
這時候需要借助另外一個表,原理類似於這樣子

 
 
 
         
  1. local temp = {
  2. [1] = k1,
  3. [2] = k2,
  4. [3] = k3,
  5. [4] = k4,
  6. [5] = k5
  7. }

其中k1,k2...k5分別代表 t中的下標值(10,20,......60)
只要做到這個, 就可以用ipairs遍歷temp,從而得到相對應的t了。

這里在《program in lua》中已經有現在代碼可以使用了,

 
 
 
         
  1. function pairsByKeys(t)
  2. local a = {}
  3. for n in pairs(t) do a[#a + 1] = n end
  4. table.sort(a)
  5. local i = 0
  6. return function ()
  7. i = i + 1
  8. return a[i], t[a[i]]
  9. end
  10. end

改變以前的遍歷代碼為以下,其實就是pairs改為 pairsBykeys

 
 
 
         
  1. for k,v in pairs (t) do
  2. print("t1", k, v)
  3. end
  4. print("___________________")
  5. for k,v in Utils.pairsByKeys (t) do
  6. print("t2", k, v)
  7. end

打印如下,可以看到, 下面一排的打印結果已經是有序的了!






免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM