Altcademy - a Forbes magazine logo Best Coding Bootcamp 2023

What is Map in JavaScript?

JavaScript has grown into one of the most popular programming languages in modern web development. As a developer, you might have encountered various data structures used in JavaScript to store and manipulate data. One such important data structure is the Map object.

In this blog post, we will explore the ins and outs of the Map object in JavaScript to help you fully understand and utilize this powerful data structure. Let's dive in!

What is Map?

A Map is a collection of key-value pairs where keys and values can be of any type. Simply put, it's like an address book where each entry has a name (key) and the corresponding address (value). The main advantage of using a Map over a simple object is that Map allows you to use any data type as keys, not just strings or symbols. This provides greater flexibility and ease when managing data in your applications.

Creating a Map

Creating a new Map is straightforward. You can use the new keyword along with the Map constructor to create a new instance of the Map object. Here's an example:

const myMap = new Map();
console.log(myMap); // Output: Map(0) {}

You can also create a Map with some initial key-value pairs. To do this, you can pass an array of key-value pairs (in the form of arrays) to the Map constructor, like this:

const myMap = new Map([
  ['name', 'John Doe'],
  ['age', 30]
]);
console.log(myMap); // Output: Map(2) { 'name' => 'John Doe', 'age' => 30 }

Working with Map

Now that we know how to create a Map let's learn how to interact with it. Map provides several useful methods to work with key-value pairs, such as setting, getting, checking, and deleting entries.

Adding key-value pairs

To add a key-value pair to a Map, you can use the set method. The set method takes two arguments: the key and the value. Here's an example:

const myMap = new Map();

myMap.set('name', 'John Doe');
myMap.set('age', 30);

console.log(myMap); // Output: Map(2) { 'name' => 'John Doe', 'age' => 30 }

Getting values

To get the value associated with a key, you can use the get method. The get method takes one argument: the key you want to retrieve the value for. Here's an example:

const myMap = new Map([
  ['name', 'John Doe'],
  ['age', 30]
]);

console.log(myMap.get('name')); // Output: 'John Doe'
console.log(myMap.get('age')); // Output: 30

Checking for keys

To check if a Map contains a specific key, you can use the has method. The has method takes one argument: the key you want to check for. It returns true if the key is present in the Map, and false otherwise. Here's an example:

const myMap = new Map([
  ['name', 'John Doe'],
  ['age', 30]
]);

console.log(myMap.has('name')); // Output: true
console.log(myMap.has('email')); // Output: false

Deleting key-value pairs

To delete a key-value pair from a Map, you can use the delete method. The delete method takes one argument: the key you want to delete. It returns true if the key-value pair was successfully deleted, and false otherwise. Here's an example:

const myMap = new Map([
  ['name', 'John Doe'],
  ['age', 30]
]);

console.log(myMap.delete('name')); // Output: true
console.log(myMap); // Output: Map(1) { 'age' => 30 }

Getting the size of a Map

To get the number of key-value pairs in a Map, you can use the size property. Here's an example:

const myMap = new Map([
  ['name', 'John Doe'],
  ['age', 30]
]);

console.log(myMap.size); // Output: 2

Clearing a Map

To remove all key-value pairs from a Map, you can use the clear method. Here's an example:

const myMap = new Map([
  ['name', 'John Doe'],
  ['age', 30]
]);

myMap.clear();

console.log(myMap); // Output: Map(0) {}

Iterating over a Map

Map objects are iterable, meaning you can loop through their key-value pairs using various iteration methods, such as forEach, for...of, and the keys, values, and entries methods.

Using forEach

The forEach method allows you to loop through the key-value pairs of a Map and perform a specific action for each pair. It takes a callback function as an argument, which is called with the value and key for each entry. Here's an example:

const myMap = new Map([
  ['name', 'John Doe'],
  ['age', 30]
]);

myMap.forEach((value, key) => {
  console.log(`${key}: ${value}`);
});

// Output:
// name: John Doe
// age: 30

Using for...of

You can also use the for...of loop to iterate through the key-value pairs of a Map. The entries method returns an iterator that provides the key-value pairs, which you can then destructure in the loop. Here's an example:

const myMap = new Map([
  ['name', 'John Doe'],
  ['age', 30]
]);

for (const [key, value] of myMap.entries()) {
  console.log(`${key}: ${value}`);
}

// Output:
// name: John Doe
// age: 30

Alternatively, you can use the for...of loop directly on the Map object, like this:

const myMap = new Map([
  ['name', 'John Doe'],
  ['age', 30]
]);

for (const [key, value] of myMap) {
  console.log(`${key}: ${value}`);
}

// Output:
// name: John Doe
// age: 30

Using keys, values, and entries

Map objects provide three methods to get iterators for their keys, values, and entries: