lua表格数据排序

我有一个由Lua代码生成并作为回调返回到客户端的表格,但数据未排序,我想返回一个按ID排序的列表。

    local players = {}
    for k, player in ipairs(QBCore.Functions.GetPlayers()) do
        local charinfo = QBCore.Functions.GetPlayer(player).PlayerData.charinfo
        local csn = QBCore.Functions.GetPlayer(player).PlayerData.citizenid
        local playerjob = QBCore.Functions.GetPlayer(player).PlayerData.job.label
        local ped = GetPlayerPed(player)
        local playerCoords = GetEntityCoords(ped)

        players[k] = {
            ["id"] = player,
            ["name"] = tostring(GetPlayerName(player)),
            ["charName"] = ("%s %s"):format(charinfo.firstname, charinfo.lastname),
            ["csn"] = csn,
            ["playerjob"] = playerjob,
            ["serverid"] = player,
            ["ped"] = GetPlayerPed(player),
            ["coords"] = playerCoords,
        }
    end
    cb(players)
点赞
用户7396148
用户7396148

你可以使用 table.sort 来对你的 players 表进行排序。这将使用你提供的函数以确定排序顺序来 原位 排序表。

table.sort 也在 Programming in Lua: 19.3 - Sort 中有解释。

这里是基于你问题的例子:

players =
{
    {id = 3217},
    {id = 6716},
    {id = 3432},
    {id = 5575},
    {id = 6124},
    {id = 1156},
    {id = 1789},
}

table.sort(players, function(p1,p2) return p1.id < p2.id end)

for k, v in ipairs(players) do
  print(k, v.id)
end

输出:

1   1156
2   1789
3   3217
4   3432
5   5575
6   6124
7   6716
2021-07-30 20:40:38