当前位置:首页 > JavaScript

js set 实现

2026-04-06 18:22:46JavaScript

Set 的基本概念

Set 是 ES6 引入的一种新的数据结构,它类似于数组,但成员的值都是唯一的,没有重复的值。Set 本身是一个构造函数,用来生成 Set 数据结构。

const set = new Set();

创建 Set

可以通过多种方式创建 Set:

// 空 Set
const set1 = new Set();

// 从数组创建
const set2 = new Set([1, 2, 3, 4]);

// 从字符串创建
const set3 = new Set('hello'); // Set {'h', 'e', 'l', 'o'}

Set 的常用方法

Set 提供了一系列方法来操作数据:

const set = new Set();

// 添加元素
set.add(1);
set.add(2).add(3); // 可以链式调用

// 删除元素
set.delete(1); // 返回布尔值,表示是否删除成功

// 检查元素是否存在
set.has(2); // true

// 清空 Set
set.clear();

// 获取元素数量
set.size; // 0

Set 的遍历方法

Set 可以通过多种方式进行遍历:

const set = new Set([1, 2, 3]);

// forEach 方法
set.forEach((value) => console.log(value));

// for...of 循环
for (const item of set) {
  console.log(item);
}

// 获取迭代器
const iterator = set.values();
iterator.next(); // {value: 1, done: false}

Set 与数组的转换

Set 和数组可以方便地相互转换:

// 数组转 Set
const arr = [1, 2, 2, 3];
const set = new Set(arr); // Set {1, 2, 3}

// Set 转数组
const uniqueArr = [...set]; // [1, 2, 3]
const uniqueArr2 = Array.from(set); // [1, 2, 3]

Set 的应用场景

Set 常用于需要唯一值的场景:

// 数组去重
const arr = [1, 2, 2, 3, 4, 4];
const uniqueArr = [...new Set(arr)]; // [1, 2, 3, 4]

// 集合运算
const setA = new Set([1, 2, 3]);
const setB = new Set([2, 3, 4]);

// 并集
const union = new Set([...setA, ...setB]); // Set {1, 2, 3, 4}

// 交集
const intersection = new Set([...setA].filter(x => setB.has(x))); // Set {2, 3}

// 差集
const difference = new Set([...setA].filter(x => !setB.has(x))); // Set {1}

WeakSet

WeakSet 是 Set 的弱引用版本,只能存储对象引用,且不可遍历:

js set 实现

const ws = new WeakSet();
const obj = {};
ws.add(obj);
ws.has(obj); // true

WeakSet 的主要用途是存储 DOM 节点,当节点被删除时,WeakSet 中的引用会自动被垃圾回收。

标签: jsset
分享给朋友:

相关文章

js实现分页

js实现分页

实现分页的基本思路 分页功能通常需要处理数据分割、页码生成和用户交互。核心逻辑包括计算总页数、根据当前页截取数据、渲染页码按钮等。 前端分页实现(静态数据) 假设已有全部数据,仅需前端分页展示:…

js实现选项卡

js实现选项卡

实现选项卡的基本思路 选项卡通常由一组标签和对应的内容面板组成。点击标签时,显示对应的内容面板,隐藏其他面板。实现这一效果需要结合HTML结构、CSS样式和JavaScript交互逻辑。 HTML结…

js实现类

js实现类

JavaScript 实现类的几种方式 JavaScript 是一种基于原型的语言,但在 ES6 之后引入了 class 语法糖,使得实现类更加直观。以下是几种常见的实现方式: 使用构造函数 传统的…

js实现tab选项卡切换

js实现tab选项卡切换

实现Tab选项卡切换的JavaScript方法 使用纯JavaScript实现Tab切换功能,可以通过监听点击事件动态切换内容显示状态。以下是两种常见实现方式: 基础DOM操作实现 /…

js实现百叶窗

js实现百叶窗

使用CSS和JavaScript实现百叶窗效果 通过CSS动画和JavaScript事件监听可以实现百叶窗效果。核心思路是将内容区域分割为多个条状元素,通过控制它们的展开/折叠状态来模拟百叶窗。…

js实现防洪

js实现防洪

防抖(Debounce)实现 防抖的核心思想是在事件触发后延迟执行回调函数,若在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口调整等场景。 function debounce(func,…