I have made a LUA table like so for my scoreboard:
Score.Ranks = {}
Score.Ranks["superadmin"] = {name = "Boss", col = Color(183, 109, 253) }
Score.Ranks["operator"] = {name = "Chief", col = Color(254, 129, 1) }
Score.Ranks["commander"] = {name = "Commander", col = Color(222, 54, 54) }
Score.Ranks["moderator"] = {name = "Director", col = Color(53, 225, 227) }
I want to sort this Table such that the 'names' are sorted in the following order when displayed on my scoreboard:
Boss
Director
Commander
Chief
How can I do this?
you can only sort a table with numeric indexes,so first convert the table:
Score.Ranks = {}
Score.Ranks["operator"] = {name = "Chief", col = Color(254, 129, 1) }
Score.Ranks["superadmin"] = {name = "Boss", col = Color(183, 109, 253) }
Score.Ranks["commander"] = {name = "Commander", col = Color(222, 54, 54) }
Score.Ranks["moderator"] = {name = "Director", col = Color(53, 225, 227) }
local tmp_t = {}
for k,v in pairs(Score.Ranks) do
local rank = (k=="superadmin") and 1 or (k=="operator" and 3 or 2)
table.insert(tmp_t, { rank = rank .. v.name, key = k, name = v.name, col = v.col} )
end
then the table is sorted by name and then use it.
table.sort(tmp_t , function (a, b) return (a.rank < b.rank ) end)
for k,v in pairs(tmp_t) do
print(k , v.rank, v.key, v.name)
end