在JavaScript中,Map
和Set
是两种非常有用的数据结构,用于存储和操作一组值。它们提供了不同的功能和用法,可以帮助我们更有效地处理数据。
一.Map集合
Map
是一种键值对的集合,其中每个值都有一个相关联的键。与常规的对象不同,Map
的键可以是任意类型的值,包括基本数据类型、对象和函数。
// 创建一个新的Map
const map = new Map();// 添加键值对
map.set("key1", "value1");
map.set("key2", "value2");// 获取值
console.log(map.get("key1")); // 输出: "value1"// 检查键是否存在
console.log(map.has("key2")); // 输出: true// 删除键值对
map.delete("key1");// 获取Map的大小
console.log(map.size); // 输出: 1// 清空Map
map.clear();
console.log(map.size); // 输出: 0
Map
提供了一组方法来操作集合,包括set()
用于添加键值对,get()
用于获取值,has()
用于检查键是否存在,delete()
用于删除键值对,size
属性用于获取集合的大小,以及clear()
用于清空集合。
另外,Map
还具有迭代功能,可以使用forEach()
方法或for...of
循环遍历集合中的键值对。
map.set("key1", "value1");
map.set("key2", "value2");// 使用forEach()遍历
map.forEach((value, key) => {console.log(`${key}: ${value}`);
});// 使用for...of遍历
for (const [key, value] of map) {console.log(`${key}: ${value}`);
}
二.Set集合
Set
是一种不重复值的集合,它只存储唯一的值,不允许重复。与Map
类似,Set
中的值可以是任意类型的值。
// 创建一个新的Set
const set = new Set();// 添加值
set.add("value1");
set.add("value2");
set.add("value3");
set.add("value3"); // 重复的值将被忽略// 获取Set的大小
console.log(set.size); // 输出: 3// 检查值是否存在
console.log(set.has("value2")); // 输出: true// 删除值
set.delete("value1");// 清空Set
set.clear();
console.log(set.size); // 输出: 0
Set
提供了一组方法来操作集合,包括add()
用于添加值,has()
用于检查值是否存在,delete()
用于删除值,size
属性用于获取集合的大小,以及clear()
用于清空集合。
与Map
一样,Set
也具有迭代功能,可以使用forEach()
方法或for...of
循环遍历集合中的值。
set.add("value1");
set.add("value2");// 使用forEach()遍历
set.forEach((value) => {console.log(value);
});// 使用for...of遍历
for (const value of set) {console.log(value);
}
三.总结
Map
和Set
是JavaScript中常用的集合类型,它们提供了方便的方法来存储和操作数据。Map
适用于需要存储键值对的场景,而Set
适用于存储唯一值的场景。无论是遍历集合、检查值是否存在还是删除特定的键值对或值,它们都提供了一致且易于使用的API。