如何根据键删除 Lua 表中的条目?
让我们考虑一个例子,我们想删除一个 Lua 表的条目。表本身的行为类似于哈希表,它具有多个键值对,我们想根据键从该表中删除一个条目。
Lua 库确实提供了一个我们可以用于我们特定情况的函数。该函数是 **table.remove()**,它接受两个参数,第一个参数是 **表** 的名称,第二个参数是我们想要删除的 **键**。
示例
请考虑以下示例:
local mapone = { [1] = 10, [2] = 20, [3] = 30 } for _,v in pairs(mapone) do print(v) end table.remove(mapone,2) for _,v in pairs(mapone) do print(v) end
在上面的例子中,我们有一个名为 **mapone** 的表,它像哈希表一样,具有不同的键值对,我们想通过提供一个 **键** 来从中删除一个条目,当我们调用 table.remove() 函数时,我们就是这样做的。
输出
10 20 30 10 30
需要注意的是,前三个数字是映射中存在的键的值,后两个数字是删除键 = 2 后保留在映射中的键的值。
还应注意,table.remove() 函数仅在我们具有整数键的情况下才有效。
为了使其适用于非整数键,我们必须创建自己的函数。
示例
请考虑以下示例:
local map = { foo = 1, bar = 2 , car = 3} function table.removekey(table, key) local element = table[key] table[key] = nil return element end for i,v in pairs(map) do print(i,v) end table.removekey(map,'bar') for i,v in pairs(map) do print(i,v) end
输出
foo 1 bar 2 car 3 foo 1 car 3
广告