我一直試圖找到一種方法來刪除表中的字符串有點像這樣:如何從表中刪除一個字符串
myTable = {'string1', 'string2'}
table.remove(myTable, 'string1')
,但我一直沒能找到反正做到這一點。有人可以幫忙嗎?
我一直試圖找到一種方法來刪除表中的字符串有點像這樣:如何從表中刪除一個字符串
myTable = {'string1', 'string2'}
table.remove(myTable, 'string1')
,但我一直沒能找到反正做到這一點。有人可以幫忙嗎?
table.remove
accepts元素的位置作爲其第二個參數。如果您確定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
正如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')
http://stackoverflow.com/questions/12394841/safely-remove-items-from-an-array-table-while-iterating#comment16660887_12397742 – hjpotter92
這是'removeFirst'並沒有更好的這是線性時間。 lhf的答案是線性時間'removeAll',它可以更新爲使用'table.move' – ryanpattison