JavaScript Maps
The Map Object
AJavaScript Map is an object that can store collections of key-value pairs,similar to adictionary in other programming languages.
Maps differ from standard objects in thatkeys can be of any data type.
Map Characteristics
Key Types
Map keys can be any type (strings, numbers, objects, etc).Insertion Order
The Map remembers the original insertion order of the keys.Size
The number of items in a Map is easily retrieved using the size property.Performance
Maps are optimized for frequent additions and removals of key-value pairs.Iteration
Maps are iterable, allowing for direct use of for...of loops or methods like forEach().Iteration Order
The original order is preserved during iteration.
Note
Maps are similar to both Objects (unique key/value collection) and Arrays (ordered values collection).
But if you look close, Maps are most similar to Objects.
How to Create a Map
You create a JavaScript Map by:
- Create a new Map and add elements with
Map.set() - Passing an existing Array to the
new Map()constructor
Examples
Create a new Map and add elements withMap.set()
const fruits = new Map();
// Set Map Values
fruits.set("apples", 500);
fruits.set("bananas", 300);
fruits.set("oranges", 200);
Pass an Array to thenew Map() constructor:
const fruits = new Map([
["apples", 500],
["bananas", 300],
["oranges", 200]
]);
Adding Map Values
You can add elements to a Map with theset() method:
Changing Map Values
Theset() method can also be used to change existing Map values:
The get() Method
Theget() method gets the value of a key in a Map:
Maps are Objects
instanceof Map returns true:
JavaScript Objects vs Maps
Differences between JavaScript Objects and Maps:
| Object | Map |
|---|---|
| Not directly iterable | Directly iterable |
| Do not have a size property | Have a size property |
| Keys must be Strings (or Symbols) | Keys can be any datatype |
| Keys are not well ordered | Keys are ordered by insertion |
| Have default keys | Do not have default keys |
Browser Support
Map is anES6 feature.
ES6 is fully supported in all modern browsers since June 2017:
| Chrome 51 | Edge 15 | Firefox 54 | Safari 10 | Opera 38 |
| May 2016 | Apr 2017 | Jun 2017 | Sep 2016 | Jun 2016 |

