📅  最后修改于: 2020-10-25 10:44:31             🧑  作者: Mango
ES6引入了两个新的数据结构-映射和集合。让我们详细了解它们。
映射是键值对的有序集合。地图类似于对象。但是,地图和对象之间存在一些差异。这些在下面列出-
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 |
下面给出了Map的语法-
let map = new Map([iterable])
let map = new Map()
以下示例使用可迭代的构造函数创建地图-
上面代码的输出如下所示-
{{…} => "Software Architect", {…} => "Developer"}
size属性可用于确定映射中存储的值的数量。
下面给出了检查地图大小的语法-
map_name.size
上面代码的输出如下所示-
3
以下是一些可用于操作地图的常见方法-
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是map的一小部分。密钥是弱引用的,因此它只能是非原始的。如果没有引用对象键,则将对其进行垃圾回收。
如果键没有引用,WeakMap将允许垃圾回收。
WeakMap的语法如下所述-
new WeakMap([iterable])
上面代码的输出如下所述-
{{…} => 1002, {…} => 1003, {…} => 1001}
1002
true
{{…} => 1002, {…} => 1003}
集合是唯一值的无序集合。该数据结构可以包含基本类型和对象类型的值。
Set的语法在下面给出-
new Set([iterable])
new Set()
上面代码的输出如下:
{"A", "B", "C", "D"}
Set对象的size属性可用于查询Set中的元素数。
下面提到了检查集合大小的语法-
set.size
上面代码的输出如下:
4
我们可以使用forEach和for..of循环遍历Set。这在下面的示例中显示-
上面代码的输出如下所述-
forEach
A
B
C
D
for of..
A
B
C
D
以下方法可用于操作集合-
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弱地持有对象,这意味着如果未引用WeakSet中存储的对象,则会对其进行垃圾回收。 WeakSet是不可迭代的,并且没有get方法。
上面代码的输出将如下所述-
WeakSet {{…}, {…}, {…}}
true
WeakSet {{…}, {…}}