Как удалить строку из таблицы

Я пытался найти способ удалить строку из таблицы вроде этого:

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
Другие вопросы по тегам