如何根据键删除 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

更新于:2021年7月20日

6K+ 次浏览

启动你的职业生涯

完成课程后获得认证

开始学习
广告