如何根據鍵刪除 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+ 次瀏覽

啟動你的職業生涯

完成課程後獲得認證

開始學習
廣告
© . All rights reserved.