local g={}function g.keys(g)local n={}for g in pairs(g)do table.insert(n,g)end return n end function g.values(g)local n={}for g,K in pairs(g)do table.insert(n,K)end return n end function g.isArray(g)for g in pairs(g)do if typeof(g)~="\110\117\109\098\101\114"then return false end end return true end function g.isEmpty(g)for g in pairs(g)do return false end return true end function g.map(g,n)local K={}for f,k in ipairs(g)do table.insert(K,n(k,f,g))end return K end return g
local TableUtils = {}

function TableUtils.keys(tab)
    local keys = {}

    for key in pairs(tab) do
        table.insert(keys, key)
    end

    return keys
end

function TableUtils.values(tab)
    local values = {}

    for _,value in pairs(tab) do
        table.insert(values, value)
    end

    return values
end

function TableUtils.isArray(tab)
    for key in pairs(tab) do
        if typeof(key) ~= "number" then
            return false
        end
    end

    return true
end

function TableUtils.isEmpty(tab)
    for _ in pairs(tab) do
        return false
    end

    return true
end

function TableUtils.map(tab, callback)
    local newArray = {}

    for key, value in ipairs(tab) do
        table.insert(newArray, callback(value, key, tab))
    end

    return newArray
end

return TableUtils
