You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Lua FiveM开发:轮毂模组表按name字段字母排序及重复值处理

实现方案

1. 按name字段字母顺序排序

直接使用Lua原生的table.sort方法对validMods数组排序,排序规则基于name字段的字符串比较:

-- 排序逻辑:name字母顺序更靠前的条目排在前面
table.sort(validMods, function(a, b)
    return a.name < b.name
end)

你示例给出的预期输出顺序为Inferno在前、Deep Five在后,和标准字母顺序(D < I)不符,如果需要自定义排序优先级,修改上述比较函数的逻辑即可。

2. 为重复名称添加变体后缀

排序完成后,用计数器表统计每个名称的出现次数,对重复的名称添加varN后缀:

local nameCount = {}
for _, mod in ipairs(validMods) do
    -- 统计当前名称的出现次数
    nameCount[mod.name] = (nameCount[mod.name] or 0) + 1
    local count = nameCount[mod.name]
    -- 第二次及以上出现的名称追加后缀
    if count > 1 then
        mod.name = string.format("%s var%d", mod.name, count)
    end
end

3. 整合到原流程的完整代码

你可以直接替换原有生成validMods的逻辑,修改后的完整代码如下:

local validMods = {}
-- 原有生成validMods的逻辑
for i = 1, (GetNumVehicleMods(vehicle, 23) + 1) do
    local modName = GetLabelText(GetModTextLabel(vehicle, 23, (i-1)))
    local txt = ""
    if GetVehicleMod(vehicle, 23) == (i-1) and tonumber(originalWheel) == tonumber(wheeltype) then  
        txt = "Currently Installed"
    end
    validMods[i] = {
        id = (i-1),
        name = modName,
        install = txt
    }
end

-- 第一步:按名称字段排序
table.sort(validMods, function(a, b)
    return a.name < b.name
end)

-- 第二步:处理重复名称追加变体后缀
local nameCount = {}
for _, mod in ipairs(validMods) do
    nameCount[mod.name] = (nameCount[mod.name] or 0) + 1
    local count = nameCount[mod.name]
    if count > 1 then
        mod.name = string.format("%s var%d", mod.name, count)
    end
end

处理后的最终数据保留了所有原有字段,同时满足排序和重复名称标识的需求,200条以内的条目处理性能完全符合FiveM脚本的运行要求。

内容的提问来源于stack exchange,提问作者Jim Shield

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 18:27:01