JS Map与Set
JavaScript 的 Map 和 Set 是 ES 6 引入的两种新的集合类型,用于高效地存储和操作数据。
Map:键值对集合
基本特点
- 类似对象,但 键可以是任意类型(包括对象)
- 按插入顺序保存键值对
- 拥有更高效的查找和遍历能力
创建与基本操作
js
const map = new Map();
// 添加元素
map.set("name", "Alice");
map.set("age", 20);
// 读取与判断
console.log(map.get("name")); // Alice
console.log(map.has("age")); // true
// 删除与清空
map.delete("age");
map.clear();
遍历方法
js
const map = new Map([
["a", 1],
["b", 2],
["c", 3],
]);
for (const [key, value] of map) console.log(key, value);
map.forEach((value, key) => console.log(key, value));
console.log([...map.keys()]); // ['a', 'b', 'c']
console.log([...map.values()]); // [1, 2, 3]
Set:值的集合
基本特点
- 不允许重复的值
- 值的顺序与插入顺序一致
- 可用于数组去重
创建与基本操作
js
const set = new Set([1, 2, 3, 3]);
set.add(4);
set.delete(2);
console.log(set.has(1)); // true
console.log(set.size); // 3
遍历与转换
js
for (const value of set) console.log(value);
console.log([...set]); // [1, 3, 4]
数组去重示例
js
const arr = [1, 2, 2, 3, 4, 4];
const unique = [...new Set(arr)];
console.log(unique); // [1, 2, 3, 4]
Map 与 Set 对比
| 特性 | Map | Set |
|---|---|---|
| 存储形式 | 键值对 | 唯一值集合 |
| 键类型 | 任意类型 | 不存在键 |
| 是否允许重复 | 否(键唯一) | 否(值唯一) |
| 典型用途 | 字典、缓存、映射表 | 去重、集合运算 |