gpt4 book ai didi

lua - 从 Lua 表中删除特定条目

转载 作者:行者123 更新时间:2023-12-04 02:56:33 34 4
gpt4 key购买 nike

我正在像这样插入到一个表中

Admin = {}

table.insert(Admins, {id = playerId, Count = 0})

而且效果很好。

我现在如何从该表中删除该特定管理员?

以下内容不起作用,我确定它是因为 ID 存储在表内的数组中,但我该如何访问它呢?

table.remove(Admins, playerId)

基本上,我想从表 Admins 中删除,其中我输入的 ID == playerId。

最佳答案

有两种方法可以从表中删除一个条目,这两种方法都是可以接受的:

1. myTable[index] = nil
Removes an entry from given index, but adds a hole in the table by maintaining the indices

local Admins = {}
table.insert(Admins, {id = 10, Count = 0})
table.insert(Admins, {id = 20, Count = 1})
table.insert(Admins, {id = 30, Count = 2})
table.insert(Admins, {id = 40, Count = 3})


local function removebyKey(tab, val)
for i, v in ipairs (tab) do
if (v.id == val) then
tab[i] = nil
end
end
end
-- Before
-- [1] = {['Count'] = 0, ['id'] = 10},
-- [2] = {['Count'] = 1, ['id'] = 20},
-- [3] = {['Count'] = 2, ['id'] = 30},
-- [4] = {['Count'] = 3, ['id'] = 40}}
removebyKey(Admins, 20)
-- After
-- [1] = {['Count'] = 0, ['id'] = 10},
-- [3] = {['Count'] = 2, ['id'] = 30},
-- [4] = {['Count'] = 3, ['id'] = 40}

2. table.remove(myTable, index)
Removes the entry from given index and renumbering the indices

local function getIndex(tab, val)
local index = nil
for i, v in ipairs (tab) do
if (v.id == val) then
index = i
end
end
return index
end
local idx = getIndex(Admins, 20) -- id = 20 found at idx = 2
if idx == nil then
print("Key does not exist")
else
table.remove(Admins, idx) -- remove Table[2] and shift remaining entries
end
-- Before is same as above
-- After entry is removed. Table indices are changed
-- [1] = {['id'] = 10, ['Count'] = 0},
-- [2] = {['id'] = 30, ['Count'] = 2},
-- [3] = {['id'] = 40, ['Count'] = 3}

关于lua - 从 Lua 表中删除特定条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52922469/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com