Search code examples
luasetuniquecontainslua-table

How to check if a table contains an element in Lua?


Is there a method for checking if a table contains a value ? I have my own (naive) function, but I was wondering if something "official" exists for that ? Or something more efficient...

function table.contains(table, element)
  for _, value in pairs(table) do
    if value == element then
      return true
    end
  end
  return false
end

By the way, the main reason I'm using this functions is to use tables as sets, ie with no duplicate elements. Is there something else I could use ?


Solution

  • You can put the values as the table's keys. For example:

    function addToSet(set, key)
        set[key] = true
    end
    
    function removeFromSet(set, key)
        set[key] = nil
    end
    
    function setContains(set, key)
        return set[key] ~= nil
    end
    

    There's a more fully-featured example here.