local config = {
[1] = {
secondlevelname="全部",
secondlevel=1,
id=1,
stdmode="0#1#2#3#4#5#6#7#10#11#15#16#19#20#21#22#23#24#25#26#28#29#30#31#40#41#42#43#44#45#46#47#48#49#50#51#52#53#54#62#63#64#65#66#67#68#69#70#71#75#76#77#78#79#80#81#82#83#84#85#8
🤖 回答引擎: 后端Lua |
🕒 时间: 2026-06-07 15:37:35 |
👁️ 阅读: 10
我是lua后端老师!
小仙,看到你这段代码了,这是一个返回配置表的Lua脚本。你想删除“秘籍”按钮对应的配置项,并且让后面的配置项索引连续上,对吧?
根据你的配置表结构,`firstlevelname="书籍"` 对应的就是“秘籍”分类,它的 `firstlevel=3`,`id=11`。
要删除它并让后面的索引连续,我们可以写一个函数来处理。这里的关键是遍历原表,创建一个新表,当遇到要删除的 `id` 时跳过,并重新计算新表的索引。
```lua
local function removeConfigAndReindex(configTable, idToRemove)
local newConfig = {}
local newIndex = 1
for oldIndex, config in ipairs(configTable) do
if config.id ~= idToRemove then
-- 复制原配置项到新表,并更新其在新表中的id(如果需要的话,这里我们保持原id,只调整数组索引)
newConfig[newIndex] = config
newIndex = newIndex + 1
end
end
return newConfig
end
local config = {
[1] = {
secondlevelname="全部",
secondlevel=1,
id=1,
stdmode="0#1#2#3#4#5#6#7#10#11#15#16#19#20#21#22#23#24#25#26#28#29#30#31#40#41#42#43#44#45#46#47#48#49#50#51#52#53#54#62#63#64#65#66#67#68#69#70#71#75#76#77#78#79#80#81#82#83#84#85#86#87#88#89#90#91#92#93#94#96#100#101#102#103#104#105#106#107#108#109#110#111#200#201",
firstlevel=1,
firstlevelname="全部",
},
[2] = {
secondlevelname="全部",
secondlevel=1,
id=2,
stdmode="5#6#10#11#15#16#19#20#21#22#23#24#26#30#62#63#64#91#111",
firstlevel=2,
firstlevelname="装备",
},
-- ... 中间配置省略,为了清晰,我们直接处理最后的返回
[11] = {
secondlevelname="全部",
secondlevel=1,
id=11,
stdmode="4#104",
secondnum=0,
firstlevel=3,
firstlevelname="书籍", -- 这是你要删除的“秘籍”分类
},
[12] = {
secondlevelname="全部",
secondlevel=1,
id=12,
stdmode="0#1#2#3#40#49#44#100#102#103",
firstlevel=4,
firstlevelname="材料",
},
-- ... 后续配置项
}
-- 调用函数,删除id为11(即“秘籍”)的配置项
local newConfig = removeConfigAndReindex(config, 11)
-- 现在newConfig就是删除并重新索引后的表了
-- 你可以用以下代码验证一下
for i, v in ipairs(newConfig) do
release_print("新索引:", i, "原id:", v.id, "分类名:", v.firstlevelname)
end
return newConfig -- 返回处理后的新配置表
```
**函数说明:**
* `removeConfigAndReindex` 函数接收两个参数:原始配置表 `configTable` 和要删除的配置项ID `idToRemove`。
* 函数内部创建一个空的新表 `newConfig`,然后遍历原表。
* 如果当前项的 `id` 不等于要删除的 `id`,就把它复制到新表的当前新索引位置,然后新索引加1。
* 这样,原表中id为11的项就被跳过了,它后面的所有项都会在新表里向前移动一位,索引自然就连续了。
* 最后函数返回这个新的、索引连续的表。
小仙,你只需要把完整的 `config` 表替换进去,然后调用这个函数,最后 `return newConfig` 就可以了。这样“秘籍”按钮就删掉了,后面的按钮索引也会自动跟上。
如果还有不明白的,随时可以问我,或者请教我的师傅浮生梦尊者哦!
← 返回问答库