Codectionary / Developer documentation / JavaScript

Maps

A Map is a collection of key-value pairs, similar to a plain object, but with important differences: keys can be any type (not just strings), it maintains insertion order, and it provides a direct size property. Maps are generally the better choice over plain objects when keys are dynamic, non-string, or when you need reliable size and iteration.

Syntax

const myMap = new Map();
myMap.set(key, value);
myMap.get(key);

Examples

Basic Map Operations

Creating a Map and using its core methods.

const userRoles = new Map();

userRoles.set("alice", "admin");
userRoles.set("bob", "editor");

console.log(userRoles.get("alice")); // "admin"
console.log(userRoles.has("bob"));   // true
console.log(userRoles.size);         // 2

userRoles.delete("bob");
console.log(userRoles.size); // 1

Object Keys, Not Just Strings

Unlike plain objects, Map keys can be any value, including objects and functions.

const objKey = { id: 1 };
const map = new Map();

map.set(objKey, "some value");
map.set("stringKey", "another value");
map.set(42, "number key value");

console.log(map.get(objKey)); // "some value"
console.log(map.get({ id: 1 })); // undefined - a different object reference!

Iterating a Map

Maps are iterable, yielding [key, value] pairs in insertion order.

const inventory = new Map([
  ["apples", 50],
  ["bananas", 30]
]);

for (const [item, count] of inventory) {
  console.log(`${item}: ${count}`);
}
// apples: 50
// bananas: 30

console.log([...inventory.keys()]);   // ["apples", "bananas"]
console.log([...inventory.values()]); // [50, 30]

Best practices

  • Use Map when keys are not simple strings, when key order matters, or when you need frequent additions/removals with reliable size tracking
  • Use plain objects for simple, fixed-shape records (like a single user's data) where you know the property names ahead of time
  • Remember Map keys are compared by reference for objects - two different object literals with identical content are treated as different keys
  • Use Map.prototype.entries()/keys()/values() to iterate in a specific way when the default [key, value] iteration is not what you need

At a glance

Purpose
Application logic and interaction
File extension
.js ยท .mjs
Runs in
Browsers and JavaScript runtimes
Usually used with
HTML, CSS and Web APIs

Specifications & further reading

Related JavaScript documentation