function sortGrouped(t)
local users, precedence = {}, {}
for _, entry in ipairs(t) do
local name = entry.name
table.insert(users, name)
precedence[name] = math.min(entry.i, precedence[name] or math.huge)
end
table.sort(users, function(a,b) return precedence[a] < precedence[b] end)
for i, name in ipairs(users) do
users[name] = i
end
table.sort(t, function(a, b) if a.name == b.name then return a.i < b.i else return users[a.name] < users[b.name] end end)
end
Comments