5

次のようなテーブルから文字列を削除する方法を見つけようとしています。

myTable = {'string1', 'string2'}
table.remove(myTable, 'string1')

しかし、とにかくそれを行う方法を見つけることができませんでした。誰か助けてくれませんか?

4

2 に答える 2

4

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')
于 2015-09-27T09:53:15.717 に答える
2

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
于 2015-09-27T05:49:50.640 に答える