lua自定义不同的遍历方式|迭代器|lua语言中如何删除元素

lua自定义不同的遍历方式|迭代器|lua语言中如何删除元素

另一篇博客里写过lua按key遍历的迭代器

function pairsByKeys(t)--按key遍历    local a = {}    for n in pairs(t) do        a[#a+1] = n    end    table.sort(a)    local i = 0    return function()        i = i + 1        return a[i], t[a[i]]    endend

比如: local testTable = {[1] = 2,[3] = 4,[100] = 6, [80] = 7,[55] = 8}
for i,v in pairsByKeys(testTable) do
print(i.."="..v)

end

输出结果为:

1=2
3=4
55=8
80=7
100=6
[Finished in 0.0s]

由此可以延伸出另一种迭代器按table中某个值排序

function parisByAValue(key,t)--按某个值排序    local a = {}    for n in pairs(t) do        if not a[t[n][key]] then            a[t[n][key]] = {}        end        local temp = a[t[n][key]]        temp[#temp+1] = n    end    local b = {}    for k,v in pairsByKeys(a) do        if type(v) == "table" then            for key,value in pairs(v) do                b[#b+1] = value            end        end    end    local i = 0    return function()        i = i+1        return b[i],t[b[i]]    endend
比如:

local testTable = {{["exp"] = 200},{["exp"] = 5},{["exp"] = 8},{["exp"] = 1000},{["exp"] = 100}}

for i,v in parisByAValue("exp",testTable) do
print(i.."="..v.exp)
end

输出结果:

2=5 3=8 5=100 1=200 4=1000 [Finished in 0.0s]

推荐阅读

    探探语言设置|探探怎么设置语言

    探探语言设置|探探怎么设置语言,,1. 探探怎么设置语言打开探探软件,然后就有消息提示的红点,点开就行了!其实这些软件都是挺简单的操作的,都是

    git设置编码|git语言设置

    git设置编码|git语言设置,,git设置编码点击cap4j搜索从git直接链接上拉代码。git语言设置Git是一个开源的分布式版本控制系统,可以有效、高

    Python之可迭代对象、迭代器、生成器

    Python之可迭代对象、迭代器、生成器,迭代,生成器,一、概念描述可迭代对象就是可以迭代的对象,我们可以通过内置的iter函数获取其迭代器,可

    区域语言设置|区域语言设置工具

    区域语言设置|区域语言设置工具,,区域语言设置工具你好,大致的方法如下,可以参考:1、按下键盘的windows 图标,再开始菜单中单击“设置”;出现的

    奥迪设置键|奥迪自定义*键怎么设置

    奥迪设置键|奥迪自定义*键怎么设置,,1. 奥迪自定义*键怎么设置1、方向盘左侧按键控制仪表盘屏幕①仪表菜单,按下确定②页面切换:左/右翻页③

    c4d基础快捷键|c4d怎么自定义快捷键

    c4d基础快捷键|c4d怎么自定义快捷键,,1. c4d怎么自定义快捷键[方法一] 第一步:打开“资源管理器”或是“我的电脑”,选中想要创建快捷方式的

    c4d语言设置|c4d汉语设置

    c4d语言设置|c4d汉语设置,,1. c4d汉语设置mac版的C4D是这样的,中文字体是有的,但是是以拼音的形式存在,比如黑体就是ht。中文字体以拼音方式