Удаление повторяющихся элементов в таблице

RevoLVAshnik

Новичок
Автор темы
14
0
Приветствую, немного не догоняю как можно через for сравнивать значения всех элементов таблицы, и если два элемента имеют одинаковое значение, то удалять более старший по порядковому номеру?
 

Vintik

Мечтатель
Проверенный
1,485
943
А что значит "не догоняю"?
1) Нужно сравнить все пары элементов. Как вариант, сравнить i-тый со всеми следующими элементами. Пример (в массиве 4 элемента):
1 сравниваешь со 2
1 сравниваешь с 3
1 сравниваешь с 4
...
2 сравниваешь с 3
2 сравниваешь с 4
...
3 сравниваешь с 4
...
(и так далее)
2) Сравнил два элемента и обнаружил, что они равны. Дальше удаляешь тот, который сравнивал с i-тым (так как ты знаешь, что у него индекс больше).
Если мы говорим о Lua, то есть функция table.remove(), если о языках, где нет возможности удалить элемент напрямую, то можно перезаписать массив без этого элемента.
 

RevoLVAshnik

Новичок
Автор темы
14
0
А что значит "не догоняю"?
1) Нужно сравнить все пары элементов. Как вариант, сравнить i-тый со всеми следующими элементами. Пример (в массиве 4 элемента):

2) Сравнил два элемента и обнаружил, что они равны. Дальше удаляешь тот, который сравнивал с i-тым (так как ты знаешь, что у него индекс больше).
Если мы говорим о Lua, то есть функция table.remove(), если о языках, где нет возможности удалить элемент напрямую, то можно перезаписать массив без этого элемента.
LUA:
for k, v in ipairs(lineonliner) do
  if v ~= lineonliner[k+1] then
    table.insert(lineonline, lineonliner[k])
    table.insert(nickonline, nickonliner[k])
    table.insert(rankonline, rankonliner[k])
    table.insert(dataonline, dataonliner[k])
    table.insert(timeonline, timeonliner[k])
  end
end
Имеется таблица lineonliner c повторяющимися значениями, но получаемая на выходе таблица lineonline всё равно содержит повторы, абсолютно идентична lineonliner