16.Map集合

 

Map集合

ES6提供了Map数据结构,Map类似于对象,也是键值对的集合,但是key的类型不限于字符串,可以是各种类型(包括对象),Map也实现了iterator接口,可以使用...for of进行遍历

  1. size属性:返回 Map 的元素个数
  2. set():增加一个新元素,返回当前 Map
  3. get():返回键名对象的键值
  4. has():检测 Map 中是否包含某个元素,返回 boolean 值
  5. clear():清空集合,返回 undefined
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
// 定义Map
let map1 = new Map();

// 添加元素
map1.set('name', 'Tom');
map1.set('sayHello', function() {
console.log("Hello");
});
let key = {
"number": "123"
}
map1.set(key, ['a', 'b', 'c']);
console.log(map1);
/*
Map(3) {'name' => 'Tom', 'sayHello' => ƒ, {…} => Array(3)}
[[Entries]]
0: {"name" => "Tom"}
1: {"sayHello" => function() { console.log("Hello"); }}
2: {Object => Array(3)}
size: 3
[[Prototype]]: Map
*/

// 遍历
for(let elem of map1) {
/**
* 每个元素elem是一个数组
* key = elem[0]
* value = elem[1]
*/
console.log(elem);
console.log('key = ' + elem[0]);
console.log('value = ' + elem[1]);
/**
* (2) ['name', 'Tom']
* key = name
* value = Tom
* (2) ['sayHello', ƒ]
* key = sayHello
* value = function() {
* console.log("Hello");
* }
* (2) [{…}, Array(3)] 0: {number: '123'} 1: (3) ['a', 'b', 'c'] length: 2 [[Prototype]]: Array(0)
* key = [object Object]
* value = a,b,c
*/
}

// size
console.log(map1.size);
// 3

// 删除
map1.delete("name");

// 获取元素
console.log(map1.get(key));
// (3) ['a', 'b', 'c']

// 清空
map1.clear();
console.log(map1);
// Map(0)