Как удалить строку из таблицы
Я пытался найти способ удалить строку из таблицы вроде этого:
myTable = {'string1', 'string2'}
table.remove(myTable, 'string1')
но я так и не смог найти, как это сделать. Может кто-нибудь помочь?
2 ответа
Как сказал 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
принимает позицию элемента в качестве второго аргумента. Если вы уверены, что 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