前言
在 JavaScript 中,Map 和 Set 是两种非常有用的数据结构,它们提供了强大的功能来管理和操作数据。这两种数据结构,在处理需要唯一性和高效查找的场景中,非常有用,可以帮助我们编写更简洁和高效的代码。
一. 详细介绍
new map()和new set()详细介绍,请看
Map 对象 是一种键值对的集合,其中每个键都是唯一的。Map 允许你使用任何类型的值(包括对象)作为键或值,并且可以方便地进行添加、删除和查找操作。创建一个新的 Map 对象可以通过 new Map() 语法实现。Map 的主要优点在于它提供了直接的键值对存储方式,并且支持迭代和多种方法来操作这些键值对。
Set 对象 是一种集合,其中的值是唯一的,不允许重复。Set 可以用来存储任何类型的值,并自动去除重复项。创建一个新的 Set 对象可以通过 new Set() 语法实现。你可以在创建 Set 时传入一个数组或类数组对象,Set 会自动过滤掉重复的值。Set 提供了多种方法来添加、删除和检查集合中的元素。
二. new Map()
1. 基本特性
new Map() 基本特性,请看
new Map()
是用来创建一个新的Map
对象的构造函数。Map
对象保存键值对,并记住键的原始插入顺序。这意味着你可以迭代Map
对象,按键的插入顺序获取键值对。
Map
对象与普通的对象(使用字符串作为键)不同,因为Map
可以使用任何类型作为键(包括函数、对象或任何原始值),而不仅仅是字符串或符号。
2. 相关方法
- 1. set(key, value) : 向 Map 对象中添加一个键值对。
- 2. get(key) : 获取指定键对应的值。
- 3. has(key) : 判断 Map 对象中是否存在指定的键。
- 4. delete(key) : 删除指定键及其对应的值。
- 5. size : 返回 Map 对象中键值对的数量。
- 6. clear() : 清空 Map 对象中的所有键值对。
- 7. keys() : 返回一个包含 Map 对象中所有键的迭代器。
- 8. values() : 返回一个包含 Map 对象中所有值的迭代器。
- 9. entries() : 返回一个包含 Map 对象中所有键值对的迭代器。
3. 基本使用
// 创建一个新的Map对象
let myMap = new Map();
// 1、添加键值对
myMap.set('name', 'Alice');
myMap.set('age', 25);
// 2、获取值
console.log(myMap.get('name')); // 输出: "Alice"
// 3、检查键是否存在
console.log(myMap.has('age')); // 输出: true
// 4、删除键值对
myMap.delete('name');
console.log(myMap.has('name')); // 输出: false
// 5、获取Map的大小
console.log(myMap.size); // 输出: 1
// 6、清空Map
myMap.clear();
console.log(myMap.size); // 输出: 0
// 7、遍历键
for (let key of myMap.keys()) {
console.log(key); // 输出: "age"
}
// 8、遍历值
for (let value of myMap.values()) {
console.log(value); // 输出: 25
}
// 9、遍历键值对
for (let [key, value] of myMap.entries()) {
console.log(`Key: ${key}, Value: ${value}`); // 输出: Key: age, Value: 25
}
三. new Set()
1. 基本特性
new Set() 基本特性,请看
- 唯一性:在
Set
中,每个值只出现一次,可以实现简单的数组去重,即使是两个完全相同的对象,它们在Set
中也只会被存储一次。- 无序性:
Set
中的元素没有特定的顺序。
2. 相关方法
add(value)
: 向Set
对象中添加一个值。如果值已存在,则不会进行任何操作。delete(value)
: 从Set
对象中删除一个值。如果值存在,则删除并返回true
;否则,返回false
。has(value)
: 返回一个布尔值,表示Set
对象中是否包含指定的值。clear()
: 清空Set
对象,移除所有元素。
3. 基本使用
let setData = new Set();
// 添加元素
setData .add(1);
setData .add(2);
setData .add(3);
console.log(setData); // setData { 1, 2 ,3 }
// 删除元素
setData.delete(2);
console.log(setData); // Set { 1, 3 }
// 检查元素是否存在
console.log(setData.has(1)); // true
console.log(setData.has(4)); // false
// 遍历元素
setData.forEach(value => console.log(value));
// 输出:
// 1
// 3
// 清空集合
setData.clear();
console.log(setData.size); // 输出: 0,因为集合已被清空
//在创建 Set 时直接传入一个可迭代对象(如数组),来初始化 Set:
let set = new Set([1, 2, 2, 3, 4, 4]);
//简单数组去重
console.log(set); // Set { 1, 2, 3, 4 }