JavaScript Set Data Structure
A JavaScript Set is a collection of unique values. Each value can only occur once in a Set. The values can be of any type, primitive values or objects.
You can create a JavaScript Set by:
- Passing an array to
new Set() -
Example:
// Create a Set const letters = new Set(["a","b","c"]);
- Creating an empty set and use
add()to add values -
Example:
// Create a Set const letters = new Set(); // Add Values to the Set letters.add("a"); letters.add("b"); letters.add("c");If you add equal elements, only the first will be saved.
JavaScript Set Methods and Properties
The size Property
// Create a new Set const mySet = new Set(["a","b","c"]); // The number of elements are mySet.size;
Listing with for ... of
You can list all Set elements (values) with a for...of... loop:
// Create a Set
const letters = new Set(["a","b","c"]);
// List all Elements
let text = "";
for (const x of letters) {
text += x;
}
The has() Method
The has() method returns true if a specified value exists in a set.
// Create a Set
const letters = new Set(["a","b","c"]);
// Does the Set contain "d"?
answer = letters.has("d");
The forEach() Method
The forEach() method invokes a function for each Set element:
// Create a Set
const letters = new Set(["a","b","c"]);
// List all entries
let text = "";
letters.forEach (function(value) {
text += value;
})
The keys() and values() Methods
They both return an Iterator object with the values in a Set:
// Create a Set
const letters = new Set(["a","b","c"]);
// List all entries
let text = "";
letters.forEach (function(value) {
text += value;
})
The entries() Method
The entries() method returns an Iterator with [value,value] pairs from a Set.
Note. The entries() method is supposed to return a [key,value] pair from an object. On the other hand, a Set has no keys, so the entries() method returns [value,value]. This makes Sets compatible with Maps.
// Create a Set
const letters = new Set(["a","b","c"]);
// Get all Entries
const myIterator = letters.entries();
// List all Entries
let text = "";
for (const entry of myIterator) {
text += entry;
}
Set Logic
In JavaScript 2025, 7 new logical methods were added to the Set object:
union()difference()intersection()isDisjointFrom()isSubsetOf()isSupersetOf()symmetricDifference()
union()
The union() method returns the union of two sets. The union() method returns a new set containing the elements which are in this set, or in the argument set, or in both:
const A = new Set(['a','b','c']); const B = new Set(['b','c','d']); const C = A.union(B);
difference()
The difference() method returns the difference between two sets. The difference() method returns a new set containing elements which are in this set but not in the argument set:
const A = new Set(['a','b','c']); const B = new Set(['b','c','d']); const C = A.difference(B);
intersection()*
The intersection() method returns the intersection of two sets. The intersection() method returns a new set containing the elements which are in this set and in the argument set:
const A = new Set(['a','b','c']); const B = new Set(['b','c','d']); const C = A.intersection(B);
isDisjointFrom()*
The isDisjointFrom() method returns true if this set has no elements in common with the argument set:
const A = new Set(['a','b','c']); const B = new Set(['b','c','d']); let answer = A.isDisjointFrom(B);
isSubsetOf()
The isSubsetOf() method returns true if all elements in this set is also elements in the argument set:
const A = new Set(['a','b','c']); const B = new Set(['b','c','d']); let answer = A.isSubsetOf(B);
isSupersetOf()*
The isSupersetOf() method returns true if all elements in the argument set are also in this set:
const A = new Set(['a','b','c']); const B = new Set(['b','c','d']); let answer = A.isSupersetOf(B);
symmetricDifference()*
The symmetricDifference() method returns the symmetric difference between to sets. The symmetricDifference() method returns a new set containing elements which are in this set or in the argument set, but not in both:
const A = new Set(['a','b','c']); const B = new Set(['b','c','d']); const C = A.symetricDifference(B);
Complete Set Reference
| Method/Property | Description |
|---|---|
new Set() | Creates a new set |
add(element) | Adds a new element to a set |
clear | Removes all elements from a set |
delete(element) | Removes an element from a set |
difference(anotherSet) | Returns the difference between two sets |
entries() | Returns an Iterator with the [value,value] pairs from a set |
forEach(func) | Invokes a callback for each element in a set |
has | Returns true if a value exists |
intersection() | Returns the intersection of two sets |
isDisjointFrom() | Returns true if no elements in a set are elements in another set |
isSubsetOf() | Returns true if a set is a subset of another set |
isSupersetOf() | Returns true if a set is a superset of another set |
keys() | Same as values() |
symmetricDifference | Returns the symmetric difference between two set |
union() | Returns the union of two sets |
values() | Returns an Iterator with the values in a set |
size() | Returns the number of elements in a Set |