博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Lua无法排序的问题(Key需要是连续的)
阅读量:6514 次
发布时间:2019-06-24

本文共 1109 字,大约阅读时间需要 3 分钟。

排序的Key需要是连续的

local x = {[1]={x=6},           [2]={x=5},           [3]={x=7},           [5]={x=2},           [6]={x=8},           [7]={x=5}}---从小到大排序table.sort(x,function(a,b)    return a.x < b.xend)for i=1,10 do    if x[i] ~= nil then         print(x[i].x)    endend

打印出:5,6,7, 2,8,5

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

非连续Key不能排序

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

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

排序前:    {  101 = {    x = 6,  },  2 = {    x = 5,  },  10 = {    x = 7,  },}排序后:    {  101 = {    x = 6,  },  2 = {    x = 5,  },  10 = {    x = 7,  },}

解决办法

local tb = { [101] = { x = 6 },             [2] = { x = 5 },             [10] = { x = 7 } }--保存全部的keylocal keys = {}for k, v in pairs(tb) do    table.insert(keys, k)end--对key进行排序table.sort(keys, function(a, b)    return a < bend)for i, key in ipairs(keys) do    local data = tb[key]end

转载于:https://www.cnblogs.com/zhaoqingqing/p/9572149.html

你可能感兴趣的文章
cacti相关资料网站
查看>>
我的友情链接
查看>>
浅析:Android--Fragment的懒加载
查看>>
Linux操作系统目录和Linux常用的文件和目录管理命令
查看>>
DIY:自己动手做一个迷你 Linux 系统(二)
查看>>
猫猫学IOS(三十)UI之Quartz2D画图片画文字
查看>>
09值类型、引用类型、字符串
查看>>
ethereumjs/merkle-patricia-tree-2-API
查看>>
go标准库的学习-runtime
查看>>
pytorch Debug —交互式调试工具Pdb (ipdb是增强版的pdb)-1-使用说明
查看>>
NodeJS学习之文件操作
查看>>
AJAX的get和post请求原生编写方法
查看>>
WebSocket 是什么原理?为什么可以实现持久连接
查看>>
Python自学笔记-logging模块详解
查看>>
Head First--设计模式
查看>>
iOS之CAGradientLayer属性简介和使用
查看>>
微信小程序UI组件、开发框架、实用库
查看>>
模块化Javascript代码的两种方式
查看>>
Money去哪了- 每日站立会议
查看>>
Python数据结构和算法学习笔记1
查看>>