Unique Values With Set
Open the project folder
In our starter files, open the index.html page from this lessons folder:
02.Arrays-In-More-Depth > 09.Unique-values-with-set
Creating a Set
Our starter files have this array of categories:
let categories = [
'bags',
'shoes',
'shirts',
'ties',
'jackets',
'hats',
'bags',
];
And if you look closely, it has the bags value twice. Arrays will accept any values we push to it, even if they are duplicate. A way we can avoid this if needed is to use Set
.
Even though is looks like one, Set
is not an array, instead it is what is called a collection, and it can store both primitive and object values.
Sets can be created from scratch, or we can convert our array like this:
let categories = [
'bags',
'shoes',
'shirts',
'ties',
'jackets',
'hats',
'bags',
];
let uniqueCategories = new Set(categories);
console.log(uniqueCategories); // 0: "bags" 1: "shoes" 2: "shirts" 3: "ties" 4: "jackets" 5: "hats"
The uniqueCategories
variable will now be a collection of unique values.
Built in methods
Set
has some built in methods we can use to modify the collection. To add a new value, we have add
:
let uniqueCategories = new Set(categories);
uniqueCategories.add('jeans');
Duplicated categories will not be accepted, even with this method.
We can remove single items with the delete
method:
let uniqueCategories = new Set(categories);
uniqueCategories.delete('ties');
Or we can remove all items with clear
:
let uniqueCategories = new Set(categories);
uniqueCategories.clear();
We can check if a certain value is included in the Set with the has
method, since this returns true or false, it also needs to be stored in a variable:
let uniqueCategories = new Set(categories);
const hasShoes = uniqueCategories.has('shoes');
console.log(hasShoes); // true
The size
property
Just like arrays have the length
property, set has the same thing but it is called size
:
let uniqueCategories = new Set(categories);
console.log(uniqueCategories.size); // 6
When using arrays, we can also use array methods such as filter to remove duplicates, but this is a little more complex than using Set.
So, if you need to have a collection of unique values, Set is a great way to achieve this.