Skip to main content

Command Palette

Search for a command to run...

Map and Set in JavaScript

Updated
6 min readView as Markdown

JavaScript originally relied heavily on objects and arrays to store and manage data. While they work well in many situations, developers often faced limitations when handling unique values, dynamic key-value pairs, and efficient data lookups.

To solve these problems, JavaScript introduced two powerful data structures:

  • Map

  • Set

These structures provide cleaner, more flexible, and more efficient ways to manage data in modern applications.


Why Traditional Objects and Arrays Had Limitations

Before understanding Map and Set, it is important to understand the problems they solve.

Problems with Objects

Objects are commonly used for key-value storage.

const user = {
  name: "Aslam",
  age: 23
};

Although objects are useful, they have some limitations:

  • Keys are mostly treated as strings

  • Objects come with inherited properties

  • Counting entries is not straightforward

  • Iteration is less flexible

  • Performance can become inefficient for frequent insertions and deletions

Example:

const obj = {};

obj[1] = "One";

console.log(obj);

Output:

{ "1": "One" }

Notice that the numeric key becomes a string automatically.


Problems with Arrays

Arrays are excellent for ordered collections.

const numbers = [1, 2, 3];

But arrays are not ideal when:

  • You need unique values only

  • You frequently search for duplicates

  • You need faster existence checking

Example:

const values = [1, 2, 2, 3, 3];

console.log(values);

Output:

[1, 2, 2, 3, 3]

Arrays allow duplicates by default.

This is where Set becomes extremely useful.


What is Map in JavaScript?

A Map is a collection of key-value pairs where keys can be of any data type.

Unlike objects, a Map preserves insertion order and allows more flexibility with keys.


Creating a Map

const userMap = new Map();

Adding Values to a Map

Use the set() method.

userMap.set("name", "Aslam");
userMap.set("age", 23);

console.log(userMap);

Accessing Values

Use the get() method.

console.log(userMap.get("name"));

Output:

Aslam

Map Can Use Any Data Type as Key

This is one of the biggest advantages over objects.

const map = new Map();

map.set(1, "Number Key");
map.set(true, "Boolean Key");

const objKey = { id: 1 };

map.set(objKey, "Object Key");

console.log(map);

Objects cannot reliably handle this flexibility.


Common Map Methods

Method Purpose
set() Add value
get() Retrieve value
has() Check if key exists
delete() Remove entry
clear() Remove all entries
size Get total entries

Example:

const products = new Map();

products.set("Laptop", 50000);

console.log(products.has("Laptop"));
console.log(products.size);

Iterating Through a Map

const students = new Map();

students.set("A", "Rahul");
students.set("B", "Sara");

for (const [key, value] of students) {
  console.log(key, value);
}

Output:

A Rahul
B Sara

Map vs Object

Feature Map Object
Key Types Any data type Mostly strings/symbols
Ordered Data Yes Not guaranteed historically
Built for Storage Yes General-purpose structure
Easy Iteration Yes Less convenient
Size Property Available Manual counting needed

When to Use Map

Use Map when:

  • You need dynamic key-value storage

  • Keys are not just strings

  • Frequent insertions and deletions happen

  • Order matters

  • You need better iteration support

Real-World Example

A caching system:

const cache = new Map();

cache.set("user_101", {
  name: "Aslam",
  role: "Admin"
});

This behaves similarly to a database-like key-value store.


What is Set in JavaScript?

A Set is a collection of unique values.

It automatically removes duplicates.


Creating a Set

const numbers = new Set();

Adding Values to a Set

Use the add() method.

numbers.add(1);
numbers.add(2);
numbers.add(2);

console.log(numbers);

Output:

Set(2) { 1, 2 }

Notice that duplicate 2 is ignored automatically.

This uniqueness property is the main strength of Set.


Removing Duplicate Values from an Array

One of the most common uses of Set.

const values = [1, 2, 2, 3, 3, 4];

const uniqueValues = [...new Set(values)];

console.log(uniqueValues);

Output:

[1, 2, 3, 4]

This is far cleaner than writing manual duplicate-checking logic.


Common Set Methods

Method Purpose
add() Add value
has() Check existence
delete() Remove value
clear() Remove all values
size Get total items

Example:

const skills = new Set();

skills.add("JavaScript");
skills.add("Node.js");

console.log(skills.has("JavaScript"));

Iterating Through a Set

const colors = new Set(["Red", "Blue", "Green"]);

for (const color of colors) {
  console.log(color);
}

Set vs Array

Feature Set Array
Duplicate Values Not Allowed Allowed
Indexed Access No Yes
Fast Existence Check Better Slower
Ordered Data Yes Yes
Best Use Case Unique collections Ordered lists

When to Use Set

Use Set when:

  • You need unique values only

  • You want to remove duplicates

  • Fast lookup is important

  • Preventing repeated entries matters

Real-World Example

Tracking unique visitors:

const visitors = new Set();

visitors.add("user101");
visitors.add("user102");
visitors.add("user101");

console.log(visitors.size);

Output:

2

Even though "user101" was added twice, it appears only once.


Key Difference Between Map and Set

Map Set
Stores key-value pairs Stores only values
Keys must be unique Values must be unique
Used for structured data Used for unique collections

Performance Benefits

Both Map and Set are optimized for modern JavaScript applications.

They generally provide:

  • Faster lookups

  • Better scalability

  • Cleaner code

  • Improved readability

Compared to manually managing objects and arrays, they reduce unnecessary logic and make programs easier to maintain.


Conclusion

Map and Set are two of the most useful modern JavaScript data structures.

  • Map improves key-value storage with flexibility and better iteration.

  • Set simplifies handling unique values and duplicate removal.

Understanding when to use them can significantly improve the quality, readability, and performance of your JavaScript code.

If your application needs:

  • Dynamic key-value management → use Map

  • Unique collections without duplicates → use Set

Modern JavaScript development relies heavily on both, especially in large-scale applications where clean and efficient data handling matters.

1 views