”;
ES6 introduces two new data structures − maps and sets. Let us learn about them in detail.
Maps
A map is an ordered collection of key-value pairs. Maps are similar to objects. However, there are some differences between maps and objects. These are listed below −
Sr.No | Object | Map |
---|---|---|
1 | Keys cannot be Object type | Keys can be any type |
2 | Keys are not ordered | Keys are ordered |
3 | not iterable | iterable |
Syntax
The syntax for Map is given below −
let map = new Map([iterable]) let map = new Map()
Example
The following example creates a map using an iterable constructor −
<script> let andy = {ename:"Andrel"}, varun = {ename:"Varun"}, prijin = {ename:"Prijin"} let empJobs = new Map([ [andy,''Software Architect''], [varun,''Developer'']] ); console.log(empJobs) </script>
The output of the above code is as shown below −
{{…} => "Software Architect", {…} => "Developer"}
Checking size of the map
The size property can be used to determine the number of values stored in the map.
Syntax
The syntax for checking the size of the map is given below −
map_name.size
Example
<script> let daysMap = new Map(); daysMap.set(''1'', ''Monday''); daysMap.set(''2'', ''Tuesday''); daysMap.set(''3'', ''Wednesday''); console.log(daysMap.size); </script>
The output of the above code is as shown below −
3
Following are some common methods that can be used to manipulate maps −
Sr.No | Object & Map |
---|---|
1 |
set(key,value) Adds key and value to map
|
2 |
get(key) Returns value if key is matched
|
3 |
has(key) Returns true if an element with the specified key exists; else returns false
|
4 |
keys() Returns an iterator that contains the keys for each element in the map object
|
5 |
values() Returns an iterator that contains the values for each element in the map object
|
6 |
entries() Returns an iterator that contains the key-value pairs for each element in the Map
|
7 |
delete(key) Removes the specified element from a Map object
|
WeakMap
WeakMap is a small subset of map. Keys are weakly referenced, so it can be non-primitive only. If there are no reference to the object keys, it will be subject to garbage collection.
- not iterable
- every key is object type
The WeakMap will allow garbage collection if the key has no reference.
Syntax
The syntax for WeakMap is stated below −
new WeakMap([iterable])
Example 1
<script> let emp = new WeakMap(); emp.set(10,''Sachin'');// TypeError as keys should be object </script>
Example 2
<script> let empMap = new WeakMap(); // emp.set(10,''Sachin'');// Error as keys should be object let e1= {ename:''Kiran''}, e2 = {ename:''Kannan''}, e3 = {ename:''Mohtashim''} empMap.set(e1,1001); empMap.set(e2,1002); empMap.set(e3,1003); console.log(empMap) console.log(empMap.get(e2)) console.log(empMap.has(e2)) empMap.delete(e1) console.log(empMap) </script>
The output of the above code is as mentioned below −
{{…} => 1002, {…} => 1003, {…} => 1001} 1002 true {{…} => 1002, {…} => 1003}
Set
A set is an unordered collection of unique values. This data structure can contain values of primitive and object types.
Syntax
The syntax for Set is given below −
new Set([iterable]) new Set()
Example
<script> let names = new Set([''A'',''B'',''C'',''D'']); console.log(names) </script>
The output of the above code is as given below −
{"A", "B", "C", "D"}
Checking the size of a set
The size property of the Set object can be used to query the number of elements in the Set.
Syntax
The syntax for checking the size of a set is mentioned below −
set.size
Example
<script> let names = new Set([''A'',''B'',''C'',''D'']); console.log(names.size) </script>
The output of the above code is as given below −
4
Iterating a Set
We can use the forEach and for..of loops to iterate through a Set. This is shown in the example below −
Example
<script> let names= new Set([''A'',''B'',''C'',''D'']); //iterate using forEach console.log(''forEach'') names.forEach(n=>console.log(n)) console.log(''for of..'') //iterate using for..of for(let n of names){ console.log(n) } </script>
The output of the above code is as mentioned below −
forEach A B C D for of.. A B C D
The following methods can be used to manipulate a set −
Sr.No | Object & Map |
---|---|
1 |
add(element) Adds an element to the Set
|
2 |
has(element) Returns true if element found; else returns false
|
3 |
delete(element) Delete specific element from the Set
|
4 |
clear() Clears all elements from the Set
|
WeakSet
A Weakset holds objects weakly, that means object stored in a WeakSet are subject to garbage collection, if they are not referenced. WeakSets are not iterable and do not have the get method.
<script> let e1 = {ename:''A''} let e2 ={ename:''B''} let e3 ={ename:''C''} let emps = new WeakSet(); emps.add(e1); emps.add(e2) .add(e3); console.log(emps) console.log(emps.has(e1)) emps.delete(e1); console.log(emps) </script>
The output of the above code will be as mentioned below −
WeakSet {{…}, {…}, {…}} true WeakSet {{…}, {…}}
”;