首页 » 工作 » 方法 » 正文

lua functions

发布者:站点默认
2020/07/16 浏览数(78) 分类:方法 lua functions已关闭评论

lua 数组去重

-- bArray = true 会把 t 当数组(连续的数字 key)
-- 默认是当作“对象(key可以不是数字)”
-- 或理解为是否保留原来的 key 
function table.unique(t, bArray)
    local check = {}
    local n = {}
    local idx = 1
    for k, v in pairs(t) do
        if not check[v] then
            if bArray then
                n[idx] = v
                idx = idx + 1
            else
                n[k] = v
            end
            check[v] = true
        end
    end
    return n
end
--[[
> local a = {1,3,2,3,4}
> local b = table.unique(a)
> for k,v in pairs(b) do print(k,v) end
1       1
2       3
3       2
5       4
]]

lua table map方法

function table.map(t, fn)
    local n = {}
    for k, v in pairs(t) do
        local item = fn(v, k, t)
        table.insert(n, item)
    end
    return n
end
--[[
> local a = {1,3,2}
> local b = table.map(a, function(v) return v .. '-' .. v end)
> for k,v in pairs(b) do print(k,v) end
1       1-1
2       3-3
3       2-2
]]
function table.filter(t, fn)
    local n = {}
    for k, v in pairs(t) do
        local item = fn(v, k, t)
        if item then
            table.insert(n, v)
        end
    end
    return n
end
--[[
> hyper = {'control', 'option', 'shift', 'command'}
> hyper = table.filter(hyper, function(v) return v ~= 'shift' end)
> for _,v in pairs(hyper) do print(v) end
control
option
command
]]
点击返回顶部
  1. 留言
  2. 联系方式