当前位置:首页 > JavaScript

js set 实现

2026-02-02 01:14:57JavaScript

Set 的基本概念

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

创建 Set

通过 new Set() 构造函数可以创建一个空的 Set。也可以传入一个可迭代对象(如数组)来初始化 Set。

const set1 = new Set();
const set2 = new Set([1, 2, 3, 4, 4]); // 自动去重,set2 包含 1, 2, 3, 4

Set 的常用方法

  • add(value): 添加某个值,返回 Set 结构本身。
  • delete(value): 删除某个值,返回一个布尔值,表示是否删除成功。
  • has(value): 返回一个布尔值,表示该值是否为 Set 的成员。
  • clear(): 清除所有成员,没有返回值。
  • size: 属性,返回 Set 实例的成员总数。
const set = new Set();
set.add(1).add(2).add(3); // 链式调用
set.has(2); // true
set.delete(2); // true
set.size; // 2
set.clear(); // 清空 Set

Set 的遍历方法

Set 实例有四种遍历方法,可以用于遍历成员:

  • keys(): 返回键名的遍历器。
  • values(): 返回键值的遍历器(Set 的键和值是同一个值)。
  • entries(): 返回键值对的遍历器。
  • forEach(): 使用回调函数遍历每个成员。
const set = new Set([1, 2, 3]);

for (let item of set.keys()) {
  console.log(item); // 1, 2, 3
}

for (let item of set.values()) {
  console.log(item); // 1, 2, 3
}

for (let item of set.entries()) {
  console.log(item); // [1, 1], [2, 2], [3, 3]
}

set.forEach((value, key) => {
  console.log(key, value); // 1 1, 2 2, 3 3
});

Set 的应用场景

  1. 数组去重
    Set 可以轻松实现数组去重。

    const arr = [1, 2, 2, 3, 4, 4];
    const uniqueArr = [...new Set(arr)]; // [1, 2, 3, 4]
  2. 存储唯一值
    适用于需要存储不重复数据的场景,如用户 ID、标签等。

  3. 集合运算
    可以通过 Set 实现并集、交集、差集等操作。

    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}
    
    // 差集(A 有而 B 没有)
    const difference = new Set([...setA].filter(x => !setB.has(x))); // Set {1}

WeakSet

WeakSet 是 Set 的变体,主要区别在于:

  • WeakSet 的成员只能是对象。
  • WeakSet 中的对象是弱引用,不会阻止垃圾回收。
  • WeakSet 不可遍历,没有 size 属性和遍历方法。
const weakSet = new WeakSet();
const obj = {};
weakSet.add(obj);
weakSet.has(obj); // true
weakSet.delete(obj); // true

js set 实现

标签: jsset
分享给朋友:

相关文章

jquery.js

jquery.js

jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互等操作。以下是关于 jQuery.js 的核心信息和使用方法: 获取…

js实现复制到剪贴板

js实现复制到剪贴板

使用document.execCommand方法(传统方式,已废弃但部分浏览器仍支持) 该方法适用于旧版浏览器,但已被标记为废弃。执行前需确保文本已被选中: function copyToClip…

js实现拷贝

js实现拷贝

实现文本拷贝 使用 document.execCommand 方法(已废弃但兼容性较好): function copyText(text) { const textarea = documen…

js实现图表

js实现图表

在JavaScript中实现图表通常使用流行的图表库,以下是几种常见的方法和工具: 使用Chart.js Chart.js是一个简单灵活的库,适合快速生成响应式图表。安装方式包括CDN引入或npm…

js实现tab选项卡切换

js实现tab选项卡切换

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

js jquery

js jquery

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够…