A data structure that can be used to map values to keys, like objects.
In maps, the keys can be any type such as arrays, booleans, numbers etc. while in objects keys are strings.
Creating Maps
const rest = new Map(); // create new empty map// create map with values// This uses same structure (array of arrays) as Object.entries()const question = new Map([ ["question", "What is the best programming language in the world?"], [1, "C"], [2, "Java"], [3, "JavaScript"], ["correct", 3], [true, "Correct 🎉"], [false, "Try again!"],]);
Methods
Set
// setrest.set("name", "Classico Italiano"); // Add a key-value pairrest.set(1, "Firenze, Italy");console.log(rest.set(2, "Lisbon, Portugal")); // set also returns the map after adding itemrest .set("categories", ["Italian", "Pizzeria", "Vegetarian", "Organic"]) .set("open", 11) .set("close", 23) .set(true, "We are open :D") .set(false, "We are closed :("); // Set calls can be chained too
Get
// getconsole.log(rest.get("name")); // get can be used to retrive value of a keyconsole.log(rest.get("true")); // if key doesn't exist, undefinded is returned// using boolean keysconst time = 8;console.log(rest.get(time > rest.get("open") && time < rest.get("close"))); // rest.get(8 > 11 && 8 < 23) -> We are closed :(
Has
// hasconsole.log(rest.has("categories"));
Size
// sizerest.size; // 7
Delete
// deleterest.delete(2);
Clear
// clearrest.clear();
Using Arrays as Keys
In order to use arrays, the set and get keys must be the same object. Because arrays are Reference Type.
const arr = [1, 2];// rest.set([1, 2], 'Test');// rest.get([1, 2]); // This will return undefined, because the two arrays are different in the heap.rest.set(arr, "Test");console.log(rest);console.log(rest.size);console.log(rest.get(arr));
// Convert object to mapconst hoursMap = new Map(Object.entries(openingHours));console.log(hoursMap);
Converting Map to Array
// Convert map to arrayconsole.log([...question]); // Array of arrays of key-value pairs// = console.log(...question.entries());console.log([...question.keys()]);console.log([...question.values()]);
Iterating Maps
Maps iteration doesn’t require using entries() method.