Set: Unique Value Collections and DeduplicationA JavaScript Set is an ordered collection that stores only unique values of any type. Duplicate primitives are ignored automatically, and checking membership with set.has(value) is fast even on large lists.
Set Properties and Methodsnew Set(iterable): Creates a Set, optionally removing duplicates from an existing array.add(val) / delete(val) / clear(): Adds or removes elements while preserving insertion order.has(val): Returns true if val exists in the Set (much faster than array.includes() on big datasets).size: Property (not a method!) returning the number of unique entries.Converting an array to a Set and spreading it back is the cleanest one-liner to deduplicate primitive arrays.
const rawTags = ["js", "css", "js", "html", "css", "node"];
const uniqueTags = [...new Set(rawTags)];
console.log("Unique tags:", uniqueTags);
const blockedIps = new Set(["10.0.0.5", "192.168.1.9"]);
blockedIps.add("10.0.0.5"); // Ignored because it already exists
console.log("Count:", blockedIps.size);
console.log("Is blocked:", blockedIps.has("10.0.0.5"));
// Iterate in insertion order
for (const ip of blockedIps) {
console.log("Blocked IP:", ip);
}
Set Methods (Union, Intersection, Difference)Modern JavaScript engines (ES2025) also add built-in set math methods: setA.union(setB), setA.intersection(setB), and setA.difference(setB) so you do not have to write manual loops for comparing tag sets.
set.length instead of set.size: Set has no .length property, so mySet.length returns undefined. Always use mySet.size.Set to deduplicate identical object literals: Two separate { id: 1 } objects have different memory references, so a Set keeps both! Deduplicate objects using a Map keyed by id.mySet[0]): Set does not support numeric indexing; convert with [...mySet] if you need index access.Set preserve insertion order?Yes, iterating a Set with for...of or .forEach() always visits elements in the exact order they were first inserted.
Set treat NaN?Unlike ===, Set treats all NaN values as equal, so adding NaN twice stores only one NaN entry.
Set over an array?Use Set whenever values must be unique or when you check .has(value) repeatedly inside loops or validation checks.
Sign in to track your learning journey, earn industry-recognized certificates, and join our elite developer community.
Quick Access With
Experiment with the code from this lesson in our interactive playground.