# 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)); }

Copyright Picolabs | Licensed under Creative Commons.