经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » Lua » 查看文章
Lua无法排序的问题(Key需要是连续的)
来源:cnblogs  作者:赵青青  时间:2018/9/25 19:29:00  对本文有异议

排序的Key需要是连续的

  1. local x = {[1]={x=6},
  2.            [2]={x=5},
  3.            [3]={x=7},
  4.            [5]={x=2},
  5.            [6]={x=8},
  6.            [7]={x=5}}
  7. ---从小到大排序
  8. table.sort(x,function(a,b)
  9.     return a.< b.x
  10. end)
  11.  
  12. for i=1,10 do
  13.     if x[i] ~= nil then 
  14.         print(x[i].x)
  15.     end
  16. end

打印出:5,6,7, 2,8,5
可以看到后面的数据并没有进行排序,因为key不是连续的,中间存在断层,Lua只会对连续的部分进行排序。

非连续Key不能排序

  1. local x = { [101] = { x = 6 },
  2.                  [2] = { x = 5 },
  3.                  [10] = { x = 7 } }
  4. print("排序前:", table.tostring(x))
  5. ---从小到大排序
  6. table.sort(x, function(a, b)
  7.     return a.< b.x
  8. end)
  9. print("排序后:", table.tostring(x))

打印出:排序前和排序后数据是一样的,同样验证 Lua只会对连续的部分进行排序

  1. 排序前:    {
  2.   101 = {
  3.     x = 6,
  4.   },
  5.   2 = {
  6.     x = 5,
  7.   },
  8.   10 = {
  9.     x = 7,
  10.   },
  11. }
  12. 排序后:    {
  13.   101 = {
  14.     x = 6,
  15.   },
  16.   2 = {
  17.     x = 5,
  18.   },
  19.   10 = {
  20.     x = 7,
  21.   },
  22. }
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号