Blog / August 8, 2023 / 3 mins read / By Suneet Agrawal

Set in JavaScript

When it comes to managing collections of unique values in JavaScript, the Set object is a hidden gem that can greatly simplify your code and enhance your data handling. In this blog post, we’re going to delve into the world of Sets, explore their features, and provide real-world examples of how you can leverage their power in your JavaScript projects.

What is a Set?

A Set is a built-in object in JavaScript that allows you to store unique values of any data type, whether they are primitive values or object references. Unlike arrays, Sets don’t allow duplicate values, making them perfect for situations where you need to maintain a list of distinct items.

Creating a Set

You can create a new Set using the Set constructor or by passing an iterable (such as an array) to the constructor. Here’s how you can create a Set and add values to it:

// Creating an empty Set
const mySet = new Set();

// Adding values to the Set
mySet.add(1);
mySet.add(2);
mySet.add(3);

console.log(mySet); // Output: Set { 1, 2, 3 }

Removing Duplicate Elements

One of the most common use cases for Sets is removing duplicates from an array. Here’s how you can achieve this:

const duplicateArray = [1, 2, 2, 3, 4, 4, 5];

const uniqueSet = new Set(duplicateArray);

console.log([...uniqueSet]); // Output: [1, 2, 3, 4, 5]

Checking Membership

Sets provide efficient membership checking. You can use the has() method to determine whether a value exists in the Set:

const colors = new Set(['red', 'green', 'blue']);

console.log(colors.has('green')); // Output: true
console.log(colors.has('yellow')); // Output: false

Iterating Through a Set

You can easily iterate through the elements of a Set using a for…of loop:

const vowels = new Set(['a', 'e', 'i', 'o', 'u']);

for (const vowel of vowels) {
    console.log(vowel);
}
// Output:
// a
// e
// i
// o
// u

Set Operations

Sets also support various set operations like union, intersection, and difference. Here’s a quick example of finding the intersection of two sets:

const setA = new Set([1, 2, 3, 4]);
const setB = new Set([3, 4, 5, 6]);

const intersection = new Set([...setA].filter(value => setB.has(value)));

console.log([...intersection]); // Output: [3, 4]

Storing Object References

Sets are not limited to primitive values. They can also store object references, making them useful for maintaining unique collections of objects:

const user1 = { id: 1, name: 'Alice' };
const user2 = { id: 2, name: 'Bob' };
const user3 = { id: 3, name: 'Charlie' };

const userSet = new Set([user1, user2, user3]);

console.log(userSet.has(user2)); // Output: true

Conclusion

Sets are a powerful addition to JavaScript’s array of data structures. Their ability to store unique values, efficient membership checking, and support for set operations make them an invaluable tool for handling collections in a wide range of scenarios. Whether you’re removing duplicates, checking for existence, or managing object references, Sets offer a clean and efficient solution that can simplify your code and improve its performance. So, next time you find yourself dealing with a collection of unique values, consider harnessing the magic of Sets in your JavaScript projects.

Comments