Повторяющиеся элементы в массиве

Bene //

Участник
Автор темы
127
6
Версия MoonLoader
.027.0-preview
Всем ку!
В массиве есть элементы, как и есть которые повторяются, как удалить тот, который повтоиился?
Lua:
local table = {"a", "a", "b", "c", "d"}

В данном случае элемент "a"
 

хромиус)

спокойно, это всего лишь слива
Друг
4,958
3,236
 

Bene //

Участник
Автор темы
127
6
а можно как-то запретить добавлять одинаковые элементы?
 

bulba$h

Активный
331
91
Всем ку!
В массиве есть элементы, как и есть которые повторяются, как удалить тот, который повтоиился?
Lua:
local table = {"a", "a", "b", "c", "d"}

В данном случае элемент "a"
а можно как-то запретить добавлять одинаковые элементы?
Lua:
local array = {"a", "a", "b", "c", "d"}

-- Удаление повторяющихся элементов
local i = 1
while i <= #array do
  local j = i + 1
  while j <= #array do
    if array[i] == array[j] then
      table.remove(array, j)
    else
      j = j + 1
    end
  end
  i = i + 1
end

-- Запрет на добавление одинаковых элементов
function addUniqueElement(array, element)
  for i = 1, #array do
    if array[i] == element then
      return
    end
  end
  table.insert(array, element)
end

-- Пример использования функции addUniqueElement
addUniqueElement(array, "a")
print(table.concat(array, ", ")) -- Вывод: a, b, c, d
addUniqueElement(array, "e")
print(table.concat(array, ", ")) -- Вывод: a, b, c, d, e
addUniqueElement(array, "a")
print(table.concat(array, ", ")) -- Вывод: a, b, c, d, e

возможно как то так, по другому не придумал
 
  • Bug
Реакции: chapo

chapo

🫡 В армии с 17.10.2023. В ЛС НЕ ОТВЕЧАЮ
Друг
8,776
11,226
Lua:
local array = { 'a', 'b', 'c', 'b' };

function table.includes(self, value)
    for k, v in pairs(self) do
        if (v == value) then
            return true, k;
        end
    end
end

function table.removeDuplicates(self)
    for k, v in pairs(self) do
        local status, index = table.includes(self, v);
        if (status and index ~= k) then
            table.remove(self, k);
        end
    end
    return self;
end

function table.insertUnique(self, value)
    if (not table.includes(self, value)) then
        table.insert(self, value);
        return true;
    end
end

function printTable(t)
    for k, v in pairs(t) do print(k, v) end
end

print('Default:');
printTable(array);

table.removeDuplicates(array);
print('Duplicates removed:');
printTable(array);

local wasInserted = table.insertUnique(array, 'a');
print(wasInserted and 'value inserted' or 'value was NOT inserted (duplicate)');
printTable(array);
 
  • Нравится
Реакции: bulba$h

cord

contact me → cordtech.ru
Проверенный
558
412
Lua:
function add(text, arr)
  local iscopy = false

  for _, value in ipairs(arr) do
    if value == text then
      iscopy = true
      break
    end
  end

  if not iscopy then
    table.insert(arr, text)
  end
end

-- пример
local table = {}
add("123", table)
add("123", table)

for _, value in ipairs(table) do
  print(value) -- вывод: 123
end