搜索
查看: 2570|回复: 2

非数字索引数组的排序

[复制链接]

47

主题

178

帖子

1176

积分

荣誉会员

Rank: 8Rank: 8

积分
1176
发表于 2013-5-10 19:15:33 | 显示全部楼层 |阅读模式
有些数组不是以数字作为索引,table.sort 对这些数组就不能排序了,好在aardio的人才很多,我下午在论坛里面找到了Winner 发的帖子里面的排序函数(原帖地址如下:http://bbs.aardio.com/thread-7895-1-1.html),给大家一起分享下,觉得以后对自己有用的,给点鼓励?

  1. //键名排序
  2. kpairs = function(tab,f){
  3.     //kpairs被调用时创建闭包
  4.     var tarr = {}
  5.     //字典中的数据复制到一个数组中然后进行排序
  6.     for k in tab
  7.         ..table.push(tarr, k);
  8.         ..table.sort(tarr, f);//调用默认的排序函数f对字典中的键进行排序
  9.     var i = 0 //迭代器计数器.(在闭包中保存值)
  10.     return function () { //迭代函数
  11.         i = i + 1
  12.         if(not tarr[ i ])
  13.             return null
  14.         else
  15.             return tarr[ i ], tab[tarr[ i ]]
  16.     }
  17. }

  18. var tab = {};
  19. tab["a"] = "1";
  20. tab["b"] = "2";
  21. tab["c"] = "3";
  22. io.open();
  23. io.print("常规输出")
  24. for k,v in (tab){
  25.         io.print(k,v);
  26. }


  27. io.print("默认排序输出")
  28. table.sort(tab);
  29. for k,v in (tab){
  30.         io.print(k,v);
  31. }


  32. io.print("函数排序后的")
  33. for k,v in kpairs(tab){
  34.         io.print(k,v);
  35. }
  36. execute("pause");
  37. io.close();
复制代码

评分

参与人数 1银币 +50 收起 理由
万事发↑新一天 + 50 很给力!

查看全部评分

回复

使用道具 举报

48

主题

593

帖子

3336

积分

五级会员

Rank: 8Rank: 8

积分
3336
发表于 2013-5-10 20:34:01 | 显示全部楼层

要鼓励一下,我有在用这个库,不过倒是没发现有这作用,幸好你指出了,看来用到的时候可以复用一下了。谢谢分享。

要鼓励一下,我有在用这个库,不过倒是没发现有这作用,幸好你指出了,看来用到的时候可以复用一下了。谢谢分享。
回复

使用道具 举报

8

主题

97

帖子

635

积分

三级会员

Rank: 4

积分
635
发表于 2013-5-10 21:09:03 | 显示全部楼层

谢谢分享

谢谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|站长邮箱|aardio.com|aardio官方社区 ( 皖ICP备09012014号 )

GMT+8, 2018-7-18 14:43 , Processed in 0.062501 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表