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); // 1Object 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
Arrow Functions
Arrow functions provide a more concise syntax for writing function expressions in JavaScript. Introduced in ES6, they use the => syntax and have some important differences from regular functions, particularly in how they handle the "this" keyword. Arrow functions are especially useful for callbacks, array methods, and short inline functions.Variables: var, let, const
JavaScript has three ways to declare variables. var is the original way, function-scoped and hoisted with a default value of undefined. let, introduced in ES6, is block-scoped and can be reassigned. const is also block-scoped but cannot be reassigned after its initial value is set. Modern JavaScript strongly favors let and const over var.Data Types
JavaScript has seven primitive data types - string, number, boolean, undefined, null, bigint, and symbol - plus the object type, which includes arrays, functions, and plain objects. JavaScript is dynamically typed, meaning a variable can hold any type and that type can change. The typeof operator reports a value's type at runtime.Arithmetic Operators
Arithmetic operators perform mathematical calculations on numbers: addition (+), subtraction (-), multiplication (*), division (/), remainder/modulo (%), and exponentiation (**). The + operator also performs string concatenation when either operand is a string. Increment (++) and decrement (--) adjust a variable by one.
Arrow functions provide a more concise syntax for writing function expressions in JavaScript. Introduced in ES6, they use the => syntax and have some important differences from regular functions, particularly in how they handle the "this" keyword. Arrow functions are especially useful for callbacks, array methods, and short inline functions.Variables: var, let, const
JavaScript has three ways to declare variables. var is the original way, function-scoped and hoisted with a default value of undefined. let, introduced in ES6, is block-scoped and can be reassigned. const is also block-scoped but cannot be reassigned after its initial value is set. Modern JavaScript strongly favors let and const over var.Data Types
JavaScript has seven primitive data types - string, number, boolean, undefined, null, bigint, and symbol - plus the object type, which includes arrays, functions, and plain objects. JavaScript is dynamically typed, meaning a variable can hold any type and that type can change. The typeof operator reports a value's type at runtime.Arithmetic Operators
Arithmetic operators perform mathematical calculations on numbers: addition (+), subtraction (-), multiplication (*), division (/), remainder/modulo (%), and exponentiation (**). The + operator also performs string concatenation when either operand is a string. Increment (++) and decrement (--) adjust a variable by one.