[JS]Map和Set
2021-04-12 10:27
标签:它的 orange mount 存在 去重 初始化 unique 迭代 不同 [JS]Map和Set 标签:它的 orange mount 存在 去重 初始化 unique 迭代 不同 原文地址:https://www.cnblogs.com/feng-fengfeng/p/12399101.html 1 let map = new Map();
2
3 map.set(‘1‘, ‘str1‘); // 字符串键
4 map.set(1, ‘num1‘); // 数字键
5 map.set(true, ‘bool1‘); // 布尔值键
6
7 // 普通的 Object 会将键转化为字符串
8 // Map 则会保留键的类型,所以下面这两个结果不同:
9 console.log(map.get(1)); // ‘num1‘
10 console.log(map.get(‘1‘)); // ‘str1‘
11 console.log(map.size); // 3
12
13 // 使用对象作为键是 Map 最值得注意和重要的功能之一。
14
15 // 可以链式调用
16 map.set(‘1‘, ‘str1‘)
17 .set(1, ‘num1‘)
18 .set(true, ‘bool1‘);
1 let recipeMap = new Map([
2 [‘cucumber‘, 500],
3 [‘tomatoes‘, 350],
4 [‘onion‘, 50]
5 ]);
6
7 // 遍历所有的键(vegetables)
8 for (let vegetable of recipeMap.keys()) {
9 console.log(vegetable); // cucumber, tomatoes, onion
10 }
11
12 // 遍历所有的值(amounts)
13 for (let amount of recipeMap.values()) {
14 console.log(amount); // 500, 350, 50
15 }
16
17 // 遍历所有的实体 [key, value]
18 for (let entry of recipeMap) { // 与 recipeMap.entries() 相同
19 console.log(entry); // cucumber,500 (and so on)
20 }
1 // 键值对 [key, value] 数组
2 let map = new Map([
3 [‘1‘, ‘str1‘],
4 [1, ‘num1‘],
5 [true, ‘bool1‘]
6 ]);
7
8 console.log(map.get(‘1‘)); // str1
1 let obj = {
2 name: "John",
3 age: 30
4 };
5
6 let map = new Map(Object.entries(obj));
7
8 console.log(map.get(‘name‘)); // John
1 let map = new Map();
2 map.set(‘banana‘, 1);
3 map.set(‘orange‘, 2);
4 map.set(‘meat‘, 4);
5
6 // let obj = Object.fromEntries(map.entries()); // 创建一个普通对象
7 let obj = Object.fromEntries(map); // 省掉 .entries()
1 let set = new Set();
2
3 let john = { name: "John" };
4 let pete = { name: "Pete" };
5 let mary = { name: "Mary" };
6
7 // visits,一些访客来访好几次
8 set.add(john);
9 set.add(pete);
10 set.add(mary);
11 set.add(john);
12 set.add(mary);
13
14 // set 只保留不重复的值
15 alert(set.size); // 3
16
17 for (let user of set) {
18 alert(user.name); // John(然后 Pete 和 Mary)
19 }
20
21 // 可以使用 for..of 或 forEach 来遍历 Set
22 let set = new Set(["oranges", "apples", "bananas"]);
23
24 for (let value of set) alert(value);
25
26 // 与 forEach 相同:
27 set.forEach((value, valueAgain, set) => {
28 alert(value);
29 });
1 function unique(arr) {
2 let set = new Set(arr);
3 return set;
4 }
5
6 let values = ["Hare", "Krishna", "Hare", "Krishna",
7 "Krishna", "Krishna", "Hare", "Hare", ":-O"
8 ];
9
10 console.log(unique(values)); // ["Hare", "Krishna", ":-O"]