TypeScript Map Object
The Map object stores key-value pairs and remembers the original insertion order of the keys.
Any value (object or primitive) can be used as a key or a value.
Map is a new data structure introduced in ES6, which can be referred to in ES6 Map and Set.
Creating a Map
TypeScript uses the Map type and the new keyword to create a Map:
let myMap = new Map();
To initialize a Map, you can pass in key-value pairs in an array format:
let myMap = new Map([
["key1", "value1"],
["key2", "value2"]
]);
Functions and properties related to Map:
map.clear()
– Removes all key/value pairs from the Map object.map.set()
– Sets the value for the key in the Map object, returning the Map object.map.get()
– Returns the value associated with the key, or undefined if it does not exist.map.has()
– Returns a boolean indicating whether a value has been associated with the key in the Map object or not.map.delete()
– Removes the element from the Map object by key, returning true if the element exists, false otherwise.map.size
– Returns the number of key/value pairs in the Map object.map.keys()
– Returns a new Iterator object that contains the keys of each element in the Map object.map.values()
– Returns a new Iterator object that contains the values of each element in the Map object.
Example - test.ts File
let nameSiteMapping = new Map();
// Set Map object
nameSiteMapping.set("Google", 1);
nameSiteMapping.set("tutorialpro", 2);
nameSiteMapping.set("Taobao", 3);
// Get the value associated with the key
console.log(nameSiteMapping.get("tutorialpro")); // 2
// Check if the Map contains the value associated with the key
console.log(nameSiteMapping.has("Taobao")); // true
console.log(nameSiteMapping.has("Zhihu")); // false
// Return the number of key/value pairs in the Map object
console.log(nameSiteMapping.size); // 3
// Delete tutorialpro
console.log(nameSiteMapping.delete("tutorialpro")); // true
console.log(nameSiteMapping);
// Remove all key/value pairs from the Map object
nameSiteMapping.clear(); // Clear the Map
console.log(nameSiteMapping);
Compile using es6:
tsc --target es6 test.ts
The compiled JavaScript code is as follows:
Example - test.js File
let nameSiteMapping = new Map();
// Set Map object
nameSiteMapping.set("Google", 1);
nameSiteMapping.set("tutorialpro", 2);
nameSiteMapping.set("Taobao", 3);
// Get the value associated with the key
console.log(nameSiteMapping.get("tutorialpro")); // 2
// Check if the Map contains the value associated with the key
console.log(nameSiteMapping.has("Taobao")); // true
console.log(nameSiteMapping.has("Zhihu")); // false
// Return the number of key/value pairs in the Map object
console.log(nameSiteMapping.size); // 3
// Delete tutorialpro
console.log(nameSiteMapping.delete("tutorialpro")); // true
console.log(nameSiteMapping);
// Remove all key/value pairs from the Map object
nameSiteMapping.clear(); // Clear the Map
console.log(nameSiteMapping);
Executing the above JavaScript code will produce the following output:
2
true
false
3
true
Map { 'Google' => 1, 'Taobao' => 3 }
Map {}
Iterating Over a Map
Elements in a Map object are inserted in order. We can iterate over the Map object, with each iteration returning a [key, value] array.
TypeScript uses for...of
to implement iteration:
Example - test.ts File
let nameSiteMapping = new Map();
nameSiteMapping.set("Google", 1);
nameSiteMapping.set("tutorialpro", 2);
nameSiteMapping.set("Taobao", 3);
// Iterate over keys in the Map
for (let key of nameSiteMapping.keys()) {
console.log(key);
}
// Iterate over values in the Map
for (let value of nameSiteMapping.values()) {
console.log(value);
}
// Iterate over key => value in the Map
for (let entry of nameSiteMapping.entries()) {
console.log(entry[0], entry[1]);
}
// Using object destructuring
for (let [key, value] of nameSiteMapping) {
console.log(key, value);
}
Compile using es6:
tsc --target es6 test.ts
The compiled JavaScript code is as follows:
Example
let nameSiteMapping = new Map();
nameSiteMapping.set("Google", 1);
nameSiteMapping.set("tutorialpro", 2);
nameSiteMapping.set("Taobao", 3);
// Iterate over keys in the Map
for (let key of nameSiteMapping.keys()) {
console.log(key);
}
// Iterate over values in the Map
for (let value of nameSiteMapping.values()) {
console.log(value);
}
// Iterate over key => value in the Map
for (let entry of nameSiteMapping.entries()) {
console.log(entry[0], entry[1]);
}
// Using object destructuring
for (let [key, value] of nameSiteMapping) {
console.log(key, value);
}
Executing the above JavaScript code will produce the following output:
Google
tutorialpro
Taobao
1
2
3
Google 1
tutorialpro 2
Taobao 3
Google 1
tutorialpro 2
Taobao 3