【Lua】Table根据value排序

2023-11-10

使用lua开发需要把有用的数据全部存进Table里,lua也提供了一个sort接口来给table排序,但是sort的实现也是基于冒泡排序,他默认table的key是从1开始的,

这样就会造成当我们的key是一些特殊的标志位,比如游戏中背包数据的GUID,就会无法正常排序。所以我们需要单独封一个接口来实现通过value来排序的功能


下面就以装备列表中,Key为GUID 通过装备部位来排序的例子

function pairsByKeys(t)
             local tempTable = { }
            for i,v in pairs(t) do
                local temp = #tempTable + 1
                tempTable[temp] = {}
                tempTable[temp].guid = i
                tempTable[temp].EquipPart = v.EquipPart
            end
            table.sort(a,function(m,n) return m.EquipPart < n.EquipPart end)
            local count = 0
            return function()
                count = count + 1
                local k = tempTable[count]
                local v = nil
                if k then k = tempTable[count].guid v = testc[tempTable[count].guid] end
                return k,v
            end
        end
OK 

当我们需要排序的时候类似这样 for i,v in pairsByKeys(t) do   就可以让装备补位从小到大输出了

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Lua】Table根据value排序 的相关文章

  • 注销租约抛出 InvalidOperationException

    我有一个使用插件的应用程序 我在另一个应用程序域中加载插件 我使用 RemoteHandle 类http www pocketsilicon com post Things That Make My Life Hell Part 1 App
  • Directory.Delete 之后 Directory.Exists 有时返回 true ?

    我有非常奇怪的行为 我有 Directory Delete tempFolder true if Directory Exists tempFolder 有时 Directory Exists 返回 true 为什么 可能是资源管理器打开了
  • 为什么 int8_t 和用户通过 cin 输入显示奇怪的结果[重复]

    这个问题在这里已经有答案了 一小段代码让我发疯 但希望你能阻止我跳出窗外 看这里 include
  • 如何将非静态类成员“std::bind”绑定到 Win32 回调函数“WNDPROC”?

    我正在尝试将非静态类成员绑定到标准WNDPROC http msdn microsoft com en us library ms633573 aspx功能 我知道我可以通过将类成员设为静态来简单地做到这一点 但是 作为一名 C 11 ST
  • 提交后禁用按钮

    当用户提交付款表单并且发布表单的代码导致 Firefox 中出现重复发布时 我试图禁用按钮 去掉代码就不会出现这个问题 在firefox以外的任何浏览器中也不会出现这个问题 知道如何防止双重帖子吗 System Text StringBui
  • 使用 LINQ2SQL 在 ASP.NET MVC 中的各种模型存储库之间共享数据上下文

    我的应用程序中有 2 个存储库 每个存储库都有自己的数据上下文对象 最终结果是我尝试将从一个存储库检索到的对象附加到从另一个存储库检索到的对象 这会导致异常 Use 构造函数注入将 DataContext 注入每个存储库 public cl
  • 复制目录内容

    我想将目录 tmp1 的内容复制到另一个目录 tmp2 tmp1 可能包含文件和其他目录 我想使用C C 复制tmp1的内容 包括模式 如果 tmp1 包含目录树 我想递归复制它们 最简单的解决方案是什么 我找到了一个解决方案来打开目录并读
  • 在一个平台上,对于所有数据类型,所有数据指针的大小是否相同? [复制]

    这个问题在这里已经有答案了 Are char int long 甚至long long 大小相同 在给定平台上 不能保证它们的大小相同 尽管在我有使用经验的平台上它们通常是相同的 C 2011 在线草稿 http www open std
  • 我可以使用 moq Mock 来模拟类而不是接口吗?

    正在经历https github com Moq moq4 wiki Quickstart https github com Moq moq4 wiki Quickstart 我看到它 Mock 一个接口 我的遗留代码中有一个没有接口的类
  • DbContext 和 ObjectContext 有什么区别

    From MSDN 表示工作单元和存储库模式的组合 使您能够查询数据库并将更改分组在一起 然后将这些更改作为一个单元写回存储 DbContext在概念上类似于ObjectContext 我虽然DbContext只处理与数据库的连接以及针对数
  • 如何在 Xaml 文本中添加电子邮件链接?

    我在 Windows Phone 8 应用程序中有一些大文本 我希望其中有电子邮件链接 例如 mailto 功能 这是代码的一部分
  • 使用自定义堆的类似 malloc 的函数

    如果我希望使用自定义预分配堆构造类似 malloc 的功能 那么 C 中最好的方法是什么 我的具体问题是 我有一个可映射 类似内存 的设备 已将其放入我的地址空间中 但我需要获得一种更灵活的方式来使用该内存来存储将随着时间的推移分配和释放的
  • CMake 无法确定目标的链接器语言

    首先 我查看了this https stackoverflow com questions 11801186 cmake unable to determine linker language with c发帖并找不到解决我的问题的方法 我
  • 按 Esc 按键关闭 Ajax Modal 弹出窗口

    我已经使用 Ajax 显示了一个面板弹出窗口 我要做的是当用户按 Esc 键时关闭该窗口 这可能吗 如果有人知道这一点或以前做过这一点 请帮助我 Thanks 通过以下链接 您可以通过按退出按钮轻松关闭窗口 http www codepro
  • 不同类型指针之间的减法[重复]

    这个问题在这里已经有答案了 我试图找到两个变量之间的内存距离 具体来说 我需要找到 char 数组和 int 之间的距离 char data 5 int a 0 printf p n p n data 5 a long int distan
  • 如果没有抽象成员,基类是否应该标记为抽象?

    如果一个类没有抽象成员 可以将其标记为抽象吗 即使没有实际理由直接实例化它 除了单元测试 是的 将不应该实例化的基类显式标记为抽象是合理且有益的 即使在没有抽象方法的情况下也是如此 它强制执行通用准则来使非叶类抽象 它阻止其他程序员创建该类
  • 方法优化 - C#

    我开发了一种方法 允许我通过参数传入表 字符串 列数组 字符串 和值数组 对象 然后使用这些参数创建参数化查询 虽然它工作得很好 但代码的长度以及多个 for 循环散发出一种代码味道 特别是我觉得我用来在列和值之间插入逗号的方法可以用不同的
  • System.IO.FileNotFoundException:找不到网络路径。在 Windows 7 上使用 DirectoryEntry 对象时出现异常

    我正在尝试使用 DirectoryEntry 对象连接到远程 Windows 7 计算机 这是我的代码 DirectoryEntry obDirEntry new DirectoryEntry WinNT hostName hostName
  • 当从finally中抛出异常时,Catch块不会被评估

    出现这个问题的原因是之前在 NET 4 0 中运行的代码在 NET 4 5 中因未处理的异常而失败 部分原因是 try finallys 如果您想了解详细信息 请阅读更多内容微软连接 https connect microsoft com
  • 从列表中选择项目以求和

    我有一个包含数值的项目列表 我需要使用这些项目求和 我需要你的帮助来构建这样的算法 下面是一个用 C 编写的示例 描述了我的问题 int sum 21 List

随机推荐

  • Alist V3版本 API使用文档 -个人整理

    Alist V3 API 整理 Alist V3是一个支持多种存储 支持网页浏览和 WebDAV 的文件列表程序 由 gin 和 Solidjs 驱动 Alist的官方文档提供了V2版本的API说明 但对于最新的V3版本并没有 这里个人整理
  • 主析取范式与主合取范式原理探究

    主析取范式 对任意一个命题公式来说 主析取范式与主合取范式都是唯一的 命题变元指原子化的 P Q命题 极小项的定义 包含全部N个命题变元的合取式 称其为极小项 且N个命题变元中 每个变元与它的否定不能同时存在 但两者中必有一个出现且仅出现一
  • 怎样加入马云,马化腾,李彦宏的微信

    让马化腾出如今你的微信聊天里面 首先声明不是 PS 我不会 PS 的 这是程序截图 例如以下图 程序源码 http git oschina net LittleDY isWeiXin 我在他的基础上 又一次设计了图片和聊天记录 图片来自百度
  • C++ 内存模型

    C 内存模型 未完 数据存储 程序数据段 程序代码段 stack栈内存 栈内存属于执行期函数 编译时确定大小 函数执行时栈空间自动分配 结束时栈空间自动销毁 栈对象是线性分配 连续排列 没有内存碎片化效应 栈内存具有函数本地性 不存再多线程
  • mysql 数据库合并命令_mysql多源复制及合并数据库

    背景 机器1 10 1 6 99 机器2 10 1 6 100 机器3 10 1 6 101 1 分别在三台主机上安装mysql数据库 1 配置yum源 root master lucky front cat etc yum repos d
  • Python 发邮件

    来源 微信公众号Crossin的编程教室 0 前言 发送电子邮件是个很常见的开发需求 比如你写了个监控天气的脚本 发现第二天要下雨 或者网站上关注的某个商品降价了 就可以发个邮件到邮箱来提醒自己 使用 Python 脚本发送邮件并不复杂 不
  • maven学习笔记

    1 什么是Maven maven是跨平台的项目管理工具 主要服务于基于java平台 包括j2ee和j2se 的项目构建 依赖管理和项目信息管理 可以帮助开发者管理jar包 一步构建项目 从清理 编译 测试 报告直接到打包 部署 2 Mave
  • 关于洗牌算法的一点总结

    之前写斗地主的时候简单写了一个洗牌函数 基本思路是先产生一个顺序数组 遍历数组 每次产生一个 1 n 随机数 把这个随机数作为下标取出数组里的数与当前位置的数交换 当时也没多想 反正能打乱数组顺序就行 后来跟师兄吃饭的时候聊起来 说到面试里
  • 解决MATLAB Simulink 无法打开高版本模型的问题

    参考及致谢MATLAB版本 R2019a 不同版本的设置方式可能不同 报错内容 解决方案 Step1 Step2 Step3 按照上述流程操作后 就可以在低版本simulink中浏览使用高版本创建的模型文件 slx文件 了
  • 上门维修保养小程序系统开发

    用户通过小程序添加绑定需要售后维保的机器设备 然后用户通过小程序线上提交报修需求清单 后台分配安排人员上门维修 标记确认订单完成 同时提供在线服务商城 积分 优惠劵抵扣会员卡管理会员等级服务 核心功能 维修服务 保养服务 使用攻略 服务商城
  • c++数据读取、保存之dcm格式(需要有dcmtk)

    include
  • 【Shader笔记】Unity Shader基础

    参考书籍 UNITY SHADER入门精要 一 材质 Material 与 Unity Shader 效果的实现需要材质和Unity Shader配合使用 常见流程为 1 创建一个材质 2 创建一个Unity Shader 并赋予给上一步新
  • python粒子群算法工具包_python进阶教程:实现粒子群算法(PSO)详解

    本文来源于公众号 csdn2299 喜欢可以关注公众号 程序员学府 这篇文章主要介绍了Python编程实现粒子群算法 PSO 详解 涉及粒子群算法的原理 过程 以及实现代码示例 具有一定参考价值 需要的朋友可以了解下 文章目录 1 原理 2
  • Transformer学习笔记

    Transformer是第一个完全依赖于自我注意力机制来计算输入和输出表征的转导模型 而不使用序列对齐的RNNs或卷积 Figure 1 左 Transformer整体结构 右 编解码器内部结构图 Encoder Decoder 编码器 由
  • 虚拟机没有显示ip地址

    之所以写这篇博客是因为有个同学刚搭建完虚拟机但没有IP地址 为了帮助那个同学和回顾知识 所以有了这篇博客 而且网上大部分博客都没提到networkmanager的问题 所以这边就记录一下 一 检查网络连接模式是否为NAT模式 在VMware
  • Redis学习:Redis实现乐观锁

    实际这部分是接着事务那一块 加了一个watch命令 这里要有一个乐观锁和悲观锁的概念 悲观锁 很悲观 认为什么时候都会出现问题 无论做什么都会加锁 乐观锁 很乐观 认为什么时候都不会出现问题 所以不会上锁 更新数据的时候去判断一下 在此期间
  • Python提取PDF中的图片

    插播一条老家自产的糖心苹果 多个品种 欢迎选购 有问题随时私信我 来自雪域高原的馈赠 海拔2000米的大凉山高原生态糖心苹果 https blog csdn net qq 15969343 article details 126107252
  • VUE H5 页面借助 dsbridge 嵌入到 app 中(前端)

    H5 页面嵌入 app 中 不得不面对 web 和 native 之间进行交互的问题 比如 传递参数 调用函数等 至于交互的桥梁目前 github 上有一些开源的 其中使用最广的是 jsBridge 然而 最近刚开源了一个新项目 dsbri
  • Canal实现Mysql数据同步至Redis、Elasticsearch

    文章目录 1 Canal简介 1 1 MySQL主备复制原理 1 2 canal工作原理 2 开启MySQL Binlog 3 安装Canal 3 1 下载Canal 3 2 修改配置文件 3 3 启动和关闭 4 SpringCloud集成
  • 【Lua】Table根据value排序

    使用lua开发需要把有用的数据全部存进Table里 lua也提供了一个sort接口来给table排序 但是sort的实现也是基于冒泡排序 他默认table的key是从1开始的 这样就会造成当我们的key是一些特殊的标志位 比如游戏中背包数据