次のようなテーブルから文字列を削除する方法を見つけようとしています。
myTable = {'string1', 'string2'}
table.remove(myTable, 'string1')
しかし、とにかくそれを行う方法を見つけることができませんでした。誰か助けてくれませんか?
次のようなテーブルから文字列を削除する方法を見つけようとしています。
myTable = {'string1', 'string2'}
table.remove(myTable, 'string1')
しかし、とにかくそれを行う方法を見つけることができませんでした。誰か助けてくれませんか?
hjpotter92 が言っtable.remove
たように、値ではなく削除する位置を期待しているため、検索する必要があります。以下の関数は値の位置を検索しtable.remove
、テーブルが有効なシーケンスのままであることを確認するために使用します。
function removeFirst(tbl, val)
for i, v in ipairs(tbl) do
if v == val then
return table.remove(tbl, i)
end
end
end
removeFirst(myTable, 'string1')
table.remove
要素の位置を 2 番目の引数として受け入れます。string1
最初のインデックス/位置に表示されることが確実な場合; あなたが使用することができます:
table.remove(myTable, 1)
または、ループを使用する必要があります。
for k, v in pairs(myTable) do -- ipairs can also be used instead of pairs
if v == 'string1' then
myTable[k] = nil
break
end
end