'Lua: Smartest way to add to table only if not already in table, or remove duplicates

I have a table of strings. I'd like an easy way to remove all of the duplicates of the table.

So if the table is {a, b, c, c, d, e, e} , after this operation it would be {a, b, c, d, e}

Alternatively, and probably preferably, is there a way to add an element to a table, but only if it is not already contained within the table.

<\noobquestion>

lua


Solution 1:[1]

It sounds like you're trying to implement a Set, a collection of unique elements. This article might help you: http://www.lua.org/pil/13.1.html

Solution 2:[2]

The simplest way is using the tables as keys, not as values, in your "container table".

Let's call the container table values. You must currently be doing something similar to this for adding elements to it:

table.insert(values, value)

And you parse values like this:

for i,v in ipairs(values) do
  -- v contains the internal values
end

In order to have the tables just once, you can insert them this other way:

values[value] = 1

This will ensure that the inserted values (strings, tables, numbers, whatever) are included just once, because they will be 'overwritten'.

Then you can parse values like this:

for k,_ in pairs(values) do
  -- k contains the internal tables
end

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 2rs2ts
Solution 2