跳到主要内容

JS Map与Set

JavaScript 的 MapSet 是 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 对比

特性MapSet
存储形式键值对唯一值集合
键类型任意类型不存在键
是否允许重复否(键唯一)否(值唯一)
典型用途字典、缓存、映射表去重、集合运算