# Set Operators

Set operators are common set operations that makes working with arrays easier.  All set operations return an array except for has which returns a boolean value.  Set operations perform deep comparisons. The following operations are possible with sets:

Given arrays (sets) A and B:

## intersection (A ∩ B):

The set of all objects that are a member of both A and B

`Usage:`

`A.intersection(B);`

## union (A ∪ B):

The set of all objects that are a member of A or B (or both)

`Usage:`

`A.union(B);`

## difference (A \ B):

The set of all members of A that are not members of B

`Usage:`

`A.difference(B);`

## has (B ⊆ A):

B is a subset of A (or it could be read as A is a superset of B)

`Usage:`

`A.has(B);`

## once:

Set of elements e that only appear 1 time in A

`Usage:`

`A.once();`

## duplicates:

Set of elements e that appear more than once in A

`Usage:`

`A.duplicates();`

## unique:

Set of (unique) elements e belonging to A

`Usage:`

`A.unique(); `

## Example

Set operators like other KRL operators can chained to perform more complex operations. This is how you could make your own symmetric difference operation (set of elements e belonging to either A or B, but not both):

```symdiff = function (A,B) {
(A.union(B)).difference(A.intersection(B));
}```