es6map和set
时间: 2025-07-21 22:19:10 浏览: 17
### ES6中Map和Set的区别与使用方法
#### 1. 数据结构与存储方式
Map 是一种键值对的集合,任何类型的值(包括对象)都可以作为键或值。与对象不同的是,Map 的键是有序的,所以当你遍历它的时候,会按照插入顺序来[^3]。
而 Set 是一种集合数据结构,其中的元素都是唯一的,不允许重复。Set 可以通过数组或其他可迭代对象创建,并且支持添加、删除、查找等操作[^4]。
#### 2. 创建方式
- **Map**:可以通过空构造函数创建一个空的 Map,或者通过传入一个二维数组来初始化。
```javascript
let myMap = new Map(); // 空 Map
let myMapWithValues = new Map([['key1', 'value1'], ['key2', 'value2']]);
```
- **Set**:可以通过空构造函数创建一个空的 Set,或者通过传入一个数组来初始化。
```javascript
let mySet = new Set(); // 空 Set
let mySetWithValues = new Set([1, 2, 3]);
```
#### 3. 添加元素
- **Map**:使用 `set` 方法添加键值对。
```javascript
myMap.set('name', '张三');
myMap.set(1, 'one');
```
- **Set**:使用 `add` 方法添加元素。
```javascript
mySet.add(1);
mySet.add('string');
```
#### 4. 删除元素
- **Map**:使用 `delete` 方法删除指定键的键值对。
```javascript
myMap.delete('name'); // 删除键为 'name' 的键值对
```
- **Set**:使用 `delete` 方法删除指定元素。
```javascript
mySet.delete(1); // 删除值为 1 的元素
```
#### 5. 清空所有数据
- **Map**:使用 `clear` 方法清空所有键值对。
```javascript
myMap.clear(); // 移除所有键值对
```
- **Set**:使用 `clear` 方法清空所有元素。
```javascript
mySet.clear(); // 移除所有元素
```
#### 6. 获取大小
- **Map**:使用 `size` 属性获取键值对的数量。
```javascript
console.log(myMap.size); // 输出:2
```
- **Set**:使用 `size` 属性获取元素的数量。
```javascript
console.log(mySet.size); // 输出:3
```
#### 7. 检查是否存在
- **Map**:使用 `has` 方法检查某个键是否存在。
```javascript
console.log(myMap.has('name')); // 输出:false
```
- **Set**:使用 `has` 方法检查某个元素是否存在。
```javascript
console.log(mySet.has(1)); // 输出:true
```
#### 8. 遍历
- **Map**:可以通过多种方式进行遍历,例如 `for...of` 循环或 `forEach` 方法。
```javascript
for (let [key, value] of myMap) {
console.log(key, value);
}
myMap.forEach((value, key) => {
console.log(key, value);
});
```
- **Set**:同样可以通过 `for...of` 循环或 `forEach` 方法进行遍历。
```javascript
for (let value of mySet) {
console.log(value);
}
mySet.forEach(value => {
console.log(value);
});
```
### 总结
Map 和 Set 在 ES6 中都是非常有用的数据结构,但它们的用途有所不同。Map 更适合存储键值对,尤其是当键需要是复杂类型时;而 Set 则更适合存储唯一值的集合[^1]。
阅读全文
相关推荐


















