function sortGrouped(t)
local users, precedence = {}, {}
for i = #t, 1, -1 do
local name = t[i].name
if not users[name] then
table.insert(precedence, name)
users[name] = {}
end
table.insert(users[name], table.remove(t))
end
local function byI(a, b)
return a.i > b.i
end
for name, list in pairs(users) do
table.sort(list, byI)
end
table.sort(precedence, function(a, b) return users[a][1].i > users[b][1].i end)
for _, name in ipairs(precedence) do
for _, entry in ipairs(users[name]) do
table.insert(t, entry)
end
end
end
Comments