lua表排序
对于lua的table排序问题,一般的按照value值来排序,使用table.sort( needSortTable , func)即可(可以根据自己的需要重写func,否则会根据默认来:默认的情形之下,如果表内既有string,number类型,则会因为两个类型直接compare而出错,所以需要自己写func来转换一下;也可根据自己的需要在此func中 添加相应的逻辑来达到你的 排序要求);
local test_table = {,,,"SORT","sort"}
table.sort(test_table , function(a , b)
return tostring(a) > tostring(b)
end)
for key,value in pairs(test_table) do
print(key,value)
end
-- 输出如下:
sort
SORT
若要进行对表进行按照 键值对key值来进行排序,只是输入的话,目测可以这样:
local test_table = {a=,b=,c=,d=}
local key_table = {}
--取出所有的键
for key,_ in pairs(test_table) do
table.insert(key_table,key)
end
--对所有键进行排序
table.sort(key_table)
for _,key in pairs(key_table) do
print(key,test_table[key])
end
但是这样子仅仅能够使得print输入时达到这个目的,而table本身并没有因此而改变,所以这样是不可取的; 我们可以改变泛型for的迭代因子来达到这个目的的:
function ipairs2(a)
return iter,a,
end local function iter(a, i)
i = i +
local v = a[i]
if v then
return i, v
else
return nil, nil
end
end a = {"one","two","three"}
for k,v in ipairs2(a) do
print(k, v)
end
--输出结果为:
--1 one
--2 two
--3 three
如此是达到我们的目的了,但是这个只能支持下表为整形的table(即是 放在table数组部分的表,hash部分却未能为力);所以需要类似这样子:
lines = {
name = "jeff",
{"pairsByKeys"},
luaH_set = ,
luaH_get = ,
luaH_present = ,
}
function pairsByKeys(t, f)
local a = {}
for n in pairs(t) do table.insert(a, n) end
table.sort(a, f)
local i = -- iterator variable
local iter = function () -- iterator function
i = i +
if a[i] == nil then return nil
else return a[i], t[a[i]]
end
end
return iter
end
function sortFunc(a , b)
if tostring(a) > tostring(b) then
return true
end
end
for name, line in pairsByKeys(lines , sortFunc) do
print(name, line)
end
输出地结果如下:
name jeff
luaH_set
luaH_present
luaH_get
table: 027EE6E8
[Finished in .1s]
如此这般 即可实现表按照键值对的排序了;这样的实现方式其实与上述将table的索引存入一个temp表中,并将此temp表按func排序;只不过这里 使用闭包,将此处理放置在了一个方法内来替代pairs罢了;
关于泛型for的文章,可参看这边文章:Click Here
参考Bolg : Click Here
lua表排序的更多相关文章
- LUA 表排序
t = { [] = , [] = , [] = } for k, v in pairs(t) do--注意这个输出顺序是没有规律的!!! print(k, v) end local keys = { ...
- <4>Lua表
lua表 1: lua没有数组,但是表可以代替数组的功能(数组部分与非数组部分); 开始的, 1, 2, 3 ...称连续的索引; b.Lua表的连续索引的长度(数组部分); #表的名字; --数组 ...
- Lua表(table)的用法_个人总结
Lua表(table)的用法_个人总结 1.表的创建及表的介绍 --table 是lua的一种数据结构用来帮助我们创建不同的数据类型.如:数组和字典--lua table 使用关联型数组,你可以用任意 ...
- LUA表克隆方法归纳
lua表克隆 将lua一个表, 克隆出一份为一个独立的另外一个表. 对于一个module, 如果在require之后,获得的表对象, 不能直接修改, 例如lua缓存此表, 但是多次逻辑执行, 都使用的 ...
- Mysql数据库表排序规则不一致导致联表查询,索引不起作用问题
Mysql数据库表排序规则不一致导致联表查询,索引不起作用问题 表更描述: 将mysql数据库中的worktask表添加ishaspic字段. 具体操作:(1)数据库worktask表新添是否有图片字 ...
- heap表和iot表排序规则不同
heap 和iot 对比 OBJECT_NAME OBJECT_TYPE --------------------------------------------------------------- ...
- lua table排序报错与解决
lua table排序 table的sort函数 比如按照大小进行排序,下面这种写法在某些情况下可能会排序错误,甚至报invalid order function for sorting table. ...
- 160628、利用Oracle rownum让表排序字段值连续
利用Oracle rownum让表排序字段值连续 1.需求说明 表(eval_index)中有字段如下: 表字段 描述 说明 ID 主键 GROUP_ID 分组编号 SORT_NUM 排序序号 按照分 ...
- lintcode-98-链表排序
98-链表排序 在 O(n log n) 时间复杂度和常数级的空间复杂度下给链表排序. 样例 给出 1->3->2->null,给它排序变成 1->2->3->nu ...
随机推荐
- Cobbler学习之一--Fedora17下配置Cobbler安装环境
1:Cobbler是什么 Cobbler是一大Linux装机利器,可以快速的建立网络安装环境. 2:安装Cobbler需要的组件 createrepo httpd (apache2 for Debia ...
- new的原罪
一直以为在开发阶段能够直接调用的,速度而言一定是最优秀的,因为总比后期通过反射之类来调用来得快吧. 下面请看一个SB的例子,重新编译以后,这个类在创建100,000,000实体时居然耗费了16秒的时间 ...
- Redux-Form学习笔记
总结下使用Redux-Form的步骤,基本的Form使用我分为一下5步: 安装Redux-Form npm install --save redux-form 创建reducer import {re ...
- 表格里使用text-overflow后不能隐藏超出的文本的解决方法
当把text-overflow设为ellipsis时文本溢出内容就能显示为省略标记,而设为clip时就能把文本溢出的部分裁切掉,不过在表格里面使用text-overflow后依旧不能隐藏超 ...
- HDU 1051 Wooden Sticks
题意: 有 n 根木棒,长度和质量都已经知道,需要一个机器一根一根地处理这些木棒. 该机器在加工过程中需要一定的准备时间,是用于清洗机器,调整工具和模板的. 机器需要的准备时间如下: 1.第一根需要1 ...
- Debian 7 安装 wireshark
安装过程很简单: $ sudo apt-get install wireshark 其中会弹出一个对话框: ┌─────────────────────┤ Configuring wireshark- ...
- sql 注入的防范(一)
为了保证程序的健壮性,我们必须对用户输入的数据做有效性验证,防止用户恶意提交数据. 关于防止 sql 注入 我主要从三个方面入手: 1.确认为正整数的,强制转化为int,$id =$_GET('id ...
- XAF How to show custom forms and controls in XAF (Example)
XAF How to show custom forms and controls in XAF (Example) https://www.devexpress.com/Support/Center ...
- 2.使用JDK开发webService
使用jdk开发webService需要注意:jdk版本必须1.6以及1.6以上! 以下webService的组成部分: server端和client端,通过服务器端(server)webService ...
- STL练习题续
//zjnu 1399 //sort 数组可用//vector sort(vector) #include<iostream> #include<algorithm> usin ...