Main/resources/[voice]/saltychat/shared/Table.lua

109 lines
1.8 KiB
Lua
Raw Permalink Normal View History

2025-06-07 08:51:21 +02:00
function table.any(list, cb)
if not list or not cb then return nil end
for k, v in pairs(list) do
if cb(v) then
return true
end
end
return false
end
function table.size(list)
local count = 0
for _, v in pairs(list) do
if v ~= nil then
count = count + 1
end
end
return count
end
function table.values(list)
if not list then return nil end
local values = {}
for k, v in pairs(list) do
if v ~= nil then
table.insert(values, v)
end
end
return (#values > 0) and values or nil
end
function table.filter(list, cb)
if not list or not cb then return nil end
local filtered = {}
for k, v in pairs(list) do
if cb(v) then
filtered[k] = v
end
end
return filtered
end
function table.map(list, cb)
local mapped = {}
for k, v in pairs(list) do
table.insert(mapped, cb(v))
end
return mapped
end
---Return if table contains value
---@param t table
---@param value any
---@return boolean
function table.contains(list, value)
-- if not list or not value then return nil end
for k,v in pairs(list) do
if v == value then
return true
end
end
return false
end
function table.find(list, cb)
-- if not list or not cb then return nil end
for k,v in pairs(list) do
if cb(v) then
return v
end
end
return nil
end
function table.findIndex(list, cb)
-- if not list or not cb then return nil end
for k,v in pairs(list) do
if cb(v) then
return k
end
end
return nil
end
function table.tostring(list)
local result = {}
for i, v in ipairs(list) do
table.insert(result, tostring(v))
end
return result
end
function table.removeKey(list, key)
if list[key] then
local r = list[key]
list[key] = nil
return r
end
return nil
end