lua table函数补充 lua table的扩展
lua table函数补充
-- lua table扩展 -- 返回table大小 table.size = function(t) local count = 0 for _ in pairs(t) do count = count + 1 end return count end --返回table的最大value table.maxn = function(t) local maxn = nil for _, v in pairs(t) do if nil == maxn then maxn = v end if maxn < v then maxn = v end end return maxn end --返回table的最小value table.minn = function(t) local min = nil for _, v in pairs(t) do if nil == min then min = v end if min > v then min = v end end return min end -- 判断table是否为空 table.empty = function(t) return not next(t) end -- 返回table索引列表 table.indices = function(t) local result = {} for k, v in pairs(t) do table.insert(result, k) end return result end -- 返回table值列表 table.values = function(t) local result = {} for k, v in pairs(t) do table.insert(result, v) end return result end -- 浅拷贝 table.clone = function(t, nometa) local result = {} if not nometa then setmetatable(result, getmetatable(t)) end for k, v in pairs (t) do result[k] = v end return result end -- 深拷贝 table.copy = function(t, nometa) local result = {} if not nometa then setmetatable(result, getmetatable(t)) end for k, v in pairs(t) do if type(v) == "table" then result[k] = table.copy(v, nometa) else result[k] = v end end return result end table.merge = function(dest, src) for k, v in pairs(src) do dest[k] = v end end table.random = function(tbl) local len = #tbl if len == 1 then return tbl end for i = 1, len do local ranOne = math.random(1, len+1-i) tbl[ranOne], tbl[len+1-i] = tbl[len+1-i],tbl[ranOne] end return tbl end table.contain = function(t, val) for _, v in pairs(t) do if v == val then return true end end return false end table.count = function(t, val) local cnt = 0 for _, v in pairs(t) do if v == val then cnt = cnt + 1 end end return cnt end table.sum = function(t) local s = 0 for _, v in pairs(t) do s = s + v end return s end table.sub = function(t, start, count) local st = {} for i = 1, count do table.insert(st, t[start+i-1]) end return st end table.findIdx = function(t, val) for k, v in ipairs(t) do if v == val then return k end end return -1 end table.removeVal = function(t, val) for k, v in ipairs(t) do if v == val then return table.remove(t, k) end end end --用val填充table table.fill = function(t, val, count) if not count then count = #t end for i = 1, count do t[i] = val end return t end table.shuffle = function(t) for i = #t, 2, -1 do local j = math.random(i) t[i], t[j] = t[j], t[i] end return t end
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!