Skip to main content

WeakMap in JavaScript (Live Playground)

The WeakMap data structure is an advanced JavaScript feature that holds key-value pairs with weakly referenced keys. It is similar to a regular Map, but its keys are not enumerable and will not prevent garbage collection. In this tutorial, we will explore how to work with WeakMap and its methods.

Creating a WeakMap

To create a WeakMap, use the WeakMap constructor. You can create an empty WeakMap or initialize it with an iterable of key-value pairs:

const emptyWeakMap = new WeakMap();

const keyValuePairs = [
[{ id: 1 }, 'First value'],
[{ id: 2 }, 'Second value'],
[{ id: 3 }, 'Third value'],
];

const initializedWeakMap = new WeakMap(keyValuePairs);

Note that only objects can be used as keys in a WeakMap. Primitive values like numbers or strings will throw a TypeError.

Live Playground, Try it Yourself

Adding Key-Value Pairs

To add a key-value pair to a WeakMap, use the set method:

const myWeakMap = new WeakMap();

const key1 = { id: 1 };
const value1 = 'First value';

const key2 = { id: 2 };
const value2 = 'Second value';

myWeakMap.set(key1, value1);
myWeakMap.set(key2, value2);

Getting Values

To retrieve the value associated with a key in a WeakMap, use the get method:

const value = myWeakMap.get(key1); // Returns 'First value'

Removing Key-Value Pairs

To remove a key-value pair from a WeakMap, use the delete method:

myWeakMap.delete(key1); // Removes the key-value pair with key1 from the WeakMap

Checking for Key-Value Pairs

To check if a WeakMap contains a specific key, use the has method:

myWeakMap.has(key1); // Returns true if the key is in the WeakMap, otherwise false
Live Playground, Try it Yourself

Limitations of WeakMaps

WeakMaps do not provide a method to iterate over their key-value pairs, nor do they have a size property. This is because their keys are weakly referenced, which allows them to be garbage collected when they are no longer accessible.

Conclusion

In this tutorial, we have learned about the WeakMap data structure in JavaScript, which is designed to hold key-value pairs with weakly referenced keys. We've learned how to create a WeakMap, add key-value pairs, retrieve values, remove key-value pairs, and check for keys in the map. WeakMaps can be useful when you need to store key-value pairs without preventing their keys from being garbage collected.