Open In App
Related Articles

Sets in JavaScript

Improve Article
Improve
Save Article
Save
Like Article
Like

In this article, we would be discussing the Set object provided by ES6. A set is a collection of items that are unique i.e no element can be repeated. Set in ES6 are ordered: elements of the set can be iterated in the insertion order. Set can store any type of value whether primitive or objects.

Syntax: 

new Set([it]);

Parameter: 

  • it: It is an iterable object whose all elements are added to the new set created, If the parameter is not specified or null is passed then a new set created is empty.

Returns: A new set object

Example:  

Javascript




// ["sumit","amit","anil","anish"]
let set1 = new Set(["sumit","sumit","amit","anil","anish"]);
  
// it contains 'f', 'o', 'd'
let set2 = new Set("fooooooood");
  
// it contains [10, 20, 30, 40]
let set3 = new Set([10, 20, 30, 30, 40, 40]);
  
 // it is an  empty set
let set4 = new Set();

Properties: 

Set.size – It returns the number of elements in the Set.

Methods of Set: 

Set.add() – It adds the new element with a specified value at the end of the Set object.

Syntax: 

set1.add(val);

Parameter:

  • val: It is a value to be added to the set.

Return value: The set object

Example: 

Javascript




let set1 = new Set();
  
set1.add(10);
set1.add(20);
  
// As this method returns
// the set object hence chaining 
// of add method can be done.
set1.add(30).add(40).add(50);
  
console.log(set1);

Output:

Set(5) {10, 20, 30, 40, 50}

Set.delete() – It deletes an element with the specified value from the Set object. 

Syntax: 

set1.delete(val);

Parameter:

  • val: It is a value to be deleted from the set.

Return value: true if the value is successfully deleted from the set else returns false.

Example: 

Javascript




let set1 = new Set("foooodiiiieee");
  
// deleting e from the set
// it prints true
console.log(set1.delete('e'));
  
console.log(set1);
  
// deleting an element which is 
// not in the set
// prints false
console.log(set1.delete('g'));

Output:

true
Set(4) {'f', 'o', 'd', 'i'}
false

Set.clear() – It removes all the element from the set. 

Syntax: 

set1.clear();

Parameter: This method does not take any parameter

Return value: Undefined

Example: 

Javascript




let set2 = new Set([10, 20, 30, 40, 50]);
  
console.log(set2);
  
set2.clear()
  
console.log(set2);

Output:

Set(5) {10, 20, 30, 40, 50}
Set(0) {size: 0}

Set.entries() – It returns an iterator object which contains an array having the entries of the set, in the insertion order. 

Syntax:

set1.entries();

Parameter: This method does not take any parameter

Return value: It returns an iterator object that contains an array of [value, value] for every element of the set, in the insertion order. 

Example:

Javascript




let set1 = new Set();
  
set1.add(50);
set1.add(30);
set1.add(40);
set1.add(20);
set1.add(10);
  
// using entries to get iterator
let getEntriesArry = set1.entries();
  
// each iterator is array of [value, value]
console.log(getEntriesArry.next().value);
  
console.log(getEntriesArry.next().value);
  
console.log(getEntriesArry.next().value);

Output:

(2) [50, 50]
(2) [30, 30]
(2) [40, 40]

Set.has() – It returns true if the specified value is present in the Set object. 

Syntax:  

set1.has(val);

Parameter: 

  • val: The value to be searched in the Set

Return value: True if the value is present else it returns false.

Example: 

Javascript




let set1 = new Set();
  
// adding element to the set
set1.add(50);
set1.add(30);
              
console.log(set1.has(50));
  
console.log(set1.has(10));

Output:

true
false

Set.values() – It returns all the values from the Set in the same insertion order. 

Syntax:  

set1.values();

Parameter: This method does not take any parameter

Return value: An iterator object that contains all the values of the set in the same order as they are inserted. 

Set.keys(): It also returns all the values from the Set in the insertion order. 

Note: It is similar to the values() in the case of Sets 

Syntax: 

set1.keys();

Parameter: This method does not take any parameter

Returns: An iterator object that contains all the values of the set in the same order as they are inserted. 

Example: 

Javascript




let set1 = new Set();
  
// adding element to the set
set1.add(50);
set1.add(30);
set1.add(40);
set1.add("Geeks");
set1.add("GFG");
  
// getting all the values
let getValues = set1.values();
  
console.log(getValues);
  
let getKeys = set1.keys();
  
console.log(getKeys);

Output:

SetIterator {50, 30, 40, 'Geeks', 'GFG'}
SetIterator {50, 30, 40, 'Geeks', 'GFG'}

Set.forEach(): It executes the given function once for every element in the Set, in the insertion order. 

Syntax:  

set1.forEach(callback[,thisargument]);

Parameter:

  • callback – It is a function that is to be executed for each element of the Set.
    • The callback function is provided with three parameters as follows: 
      • the element key
      • the element value
      • the Set object to be traversed
  • thisargument – Value to be used as this when executing the callback.

Return value: Undefined

Set.prototype[@@iterator](): It returns a Set iterator function which is values() function by default. 

Syntax: 

set1[Symbol.iterator]();

Parameter: This method does not take any parameter

Return value:  A Set iterator function and it is values() by default.

Example: 

Javascript




let set1 = new Set(["sumit","sumit","amit","anish"]);
  
let getit = set1[Symbol.iterator]();
  
console.log(getit.next());
  
console.log(getit.next());
  
console.log(getit.next());
  
console.log(getit.next());

Output:

{value: 'sumit', done: false}
{value: 'amit', done: false}
{value: 'anish', done: false}
{value: undefined, done: true}

Set Operations:  

JavaScript subSet() Method: It returns true if Set A is a subset of Set B.  A Set A is said to be a subset of Set B, if all the elements of Set A is also present in Set B. Now lets implement and use the subset function. 

Example: 

Javascript




Set.prototype.subSet = function(otherSet)
{
    // if size of this set is greater
    // than otherSet then it can't be 
    //  a subset
    if(this.size > otherSet.size)
        return false;
    else
    {
        for(let elem of this)
        {
            // if any of the element of 
            // this is not present in the
            // otherset then return false
            if(!otherSet.has(elem))
                return false;
        }
        return true;
    }
}
  
// using the subSet function
  
// Declaring different sets
let setA = new Set([10, 20, 30]);
let setB = new Set([50, 60, 10, 20, 30, 40]);
let setC = new Set([10, 30, 40, 50]);
  
// prints true
console.log(setA.subSet(setB));
  
// prints false
console.log(setA.subSet(setC));
  
// prints true
console.log(setC.subSet(setB));

Output:

true
false
true

JavaScript union() Method: It returns a Set which consists of the union of Set A and Set B. A Set is said to be a union of two sets, if it contains all elements of Set A as well as all elements of Set B, but it doesn’t contain duplicate elements. 

If an element is present in both Set A and Set B then the union of Set A and B will contain a single copy of the element. Let’s implement and use the union function 

Example: 

Javascript




Set.prototype.union = function(otherSet)
{
    // creating new set to store union
    let unionSet = new Set();
  
    // iterate over the values and add 
    // it to unionSet
    for (let elem of this)
    {
        unionSet.add(elem);
    }
  
    // iterate over the values and add it to 
    // the unionSet
    for(let elem of otherSet)
        unionSet.add(elem);
  
    // return the values of unionSet
    return unionSet;
}
  
// using the union function
// Declaring values for set1 and set2
let set1 = new Set([10, 20, 30, 40, 50]);
let set2 = new Set([40, 50, 60, 70, 80]);  
  
// performing union operation
// and storing the resultant set in 
// unionSet
let unionSet = set1.union(set2);
  
console.log(unionSet.values());

Output:

SetIterator {10, 20, 30, 40, 50, …}

JavaScript intersection() Method: It returns the intersection of Set A and Set B. A Set is said to be the intersection of Set A and B if contains an element which is present both in Set A and Set B. Let’s implement and use the intersection function 

Example:  

Javascript




Set.prototype.intersection = function(otherSet)
{
    // creating new set to store intersection
    let intersectionSet = new Set();
  
    // Iterate over the values 
    for(let elem of otherSet)
    {
        // if the other set contains a 
        // similar value as of value[i]
        // then add it to intersectionSet
        if(this.has(elem))
            intersectionSet.add(elem);
    }
  
// return values of intersectionSet
return intersectionSet;                
}
// using intersection function
// Declaring values for set1 and set2
let set1 = new Set([10, 20, 30, 40, 50]);
let set2 = new Set([40, 50, 60, 70, 80]);  
  
// performing union operation
// and storing the resultant set in 
// intersectionset
let intersectionSet = set1.intersection(set2);
  
console.log(intersectionSet.values());

Output:

SetIterator {40, 50}

JavaScript difference() Method: It returns the Set which contains the difference between Set A and Set B. A Set is said to be a difference between Set A and B if it contains set of elements e which are present in Set A but not in Set B. Let’s implement and use the difference function 

Example:  

Javascript




Set.prototype.difference = function(otherSet)
{
    // creating new set to store difference
    let differenceSet = new Set();
  
    // iterate over the values
    for(let elem of this)
    {
        // if the value[i] is not present 
        // in otherSet add to the differenceSet
        if(!otherSet.has(elem))
            differenceSet.add(elem);
    }
  
    // returns values of differenceSet
    return differenceSet;
}
  
// using difference function
// Declaring values for set1 and set2
let set1 = new Set([10, 20, 30, 40, 50]);
let set2 = new Set([40, 50, 60, 70, 80]);  
  
// performing union operation
// and storing the resultant set in 
// intersectionset
let differenceSet = set1.difference(set2);
  
console.log(differenceSet);

Output:

Set(3) {10, 20, 30}

JavaScript is best known for web page development but it is also used in a variety of non-browser environments. You can learn JavaScript from the ground up by following this JavaScript Tutorial and JavaScript Examples.


Last Updated : 23 May, 2023
Like Article
Save Article
Similar Reads
Related Tutorials