JavaScript 中的Set 数据结构
·
文章目录
JavaScript 中的Set 数据结构
1. Set 数据结构
{1, 2, 3} 表示一个 Set 集合,包含三个元素:1, 2, 3
2. 创建 Set
// 创建 Set 的几种方式
const set1 = new Set([1, 2, 3]); // 从数组创建
const set2 = new Set(); // 空Set
console.log(set1); // Set(3) {1, 2, 3}
3. Set 的特点
3.1 自动去重
const set = new Set([1, 2, 2, 3, 3, 3]);
console.log(set); // Set(3) {1, 2, 3} - 自动去除重复
3.2 任何类型的值都可以作为元素
const mixedSet = new Set([1, 'hello', true, {a: 1}, [1, 2]]);
console.log(mixedSet); // Set(5) {1, 'hello', true, {a: 1}, [1, 2]}
3.3 保持插入顺序
const set = new Set([3, 1, 2]);
for (let item of set) {
console.log(item); // 3, 1, 2 (保持插入顺序)
}
4. Set 的常用方法🌟🌟🌟
const set = new Set([1, 2, 3]);
// 添加元素
set.add(4); // Set(4) {1, 2, 3, 4}
set.add(2); // Set(4) {1, 2, 3, 4} (重复元素不会被添加)
// 删除元素
set.delete(1); // Set(3) {2, 3, 4}
// 检查元素是否存在
console.log(set.has(2)); // true
// 获取元素数量
console.log(set.size); // 3
// 清空Set
set.clear(); // Set(0) {}
// 遍历Set
set.forEach(item => console.log(item));
for (let item of set) {
console.log(item);
}
5. Set vs 数组 vs 对象
| 特性 | Set | 数组 | 对象 |
|---|---|---|---|
| 元素唯一性 | ✅ 自动去重 | ❌ 允许重复 | ✅ 键唯一 |
| 元素类型 | 任意类型 | 任意类型 | 字符串/Symbol |
| 顺序 | 插入顺序 | 索引顺序 | 不保证 |
| 查找性能 | O(1) | O(n) | O(1) |
6. Set vs 对象的区别
// Set - 存储值
const set = new Set([1, 2, 3]);
console.log(set); // Set(3) {1, 2, 3}
// 对象 - 存储键值对
const obj = {1: 'value1', 2: 'value2', 3: 'value3'};
console.log(obj); // {1: 'value1', 2: 'value2', 3: 'value3'}
// Set 查找
console.log(set.has(1)); // true
// 对象查找
console.log('1' in obj); // true (注意:对象的键是字符串)
7. 实际应用场景
7.1 数组去重
const arr = [1, 2, 2, 3, 3, 3];
const uniqueArr = [...new Set(arr)]; // [1, 2, 3]
7.2 集合运算
const setA = new Set([1, 2, 3]);
const setB = new Set([2, 3, 4]);
// 并集
const union = new Set([...setA, ...setB]); // {1, 2, 3, 4}
// 交集
const intersection = new Set([...setA].filter(x => setB.has(x))); // {2, 3}
// 差集
const difference = new Set([...setA].filter(x => !setB.has(x))); // {1}
7.3 记录已访问的元素
function removeDuplicates(arr) {
const seen = new Set();
const result = [];
for (let item of arr) {
if (!seen.has(item)) {
seen.add(item);
result.push(item);
}
}
return result;
}
8. 总结
{1, 2, 3} 是 Set 数据结构的表示方式,它具有:
- 自动去重特性
- 高效的查找性能 (O(1))
- 保持插入顺序
- 支持任何类型的值
在控制台输出时,Set 会显示为 Set(n) {value1, value2, ...} 的格式。
更多推荐



所有评论(0)