当前位置:首页 > JavaScript

js实现集合

2026-02-02 09:34:15JavaScript

集合的基本概念

集合是一种无序且不重复的数据结构,常用于存储唯一值。JavaScript 本身没有内置的集合类型,但可以通过对象或 ES6 的 Set 类实现。

使用 ES6 的 Set 实现集合

ES6 引入了 Set 类,直接支持集合操作:

const set = new Set();
set.add(1);
set.add(2);
set.add(1); // 重复值会被忽略

console.log(set.size); // 输出 2
console.log(set.has(1)); // 输出 true

set.delete(1);
console.log(set.has(1)); // 输出 false

使用对象模拟集合

在 ES6 之前,可以通过对象的键唯一性模拟集合:

js实现集合

const set = {};
set["1"] = true;
set["2"] = true;
set["1"] = true; // 重复值会被覆盖

console.log(Object.keys(set).length); // 输出 2
console.log("1" in set); // 输出 true

delete set["1"];
console.log("1" in set); // 输出 false

集合的常见操作

并集

合并两个集合的所有元素:

const union = (setA, setB) => new Set([...setA, ...setB]);

交集

获取两个集合的共同元素:

js实现集合

const intersection = (setA, setB) => 
  new Set([...setA].filter(x => setB.has(x)));

差集

获取属于第一个集合但不属于第二个集合的元素:

const difference = (setA, setB) => 
  new Set([...setA].filter(x => !setB.has(x)));

子集检查

判断一个集合是否是另一个集合的子集:

const isSubset = (setA, setB) => 
  [...setA].every(x => setB.has(x));

性能注意事项

  • Setadddeletehas 操作的平均时间复杂度为 O(1)。
  • 使用对象模拟集合时,键会被强制转换为字符串,可能导致类型混淆。
  • Set 可以直接存储任意类型的值(包括对象引用),而对象模拟仅支持字符串或 Symbol 作为键。

标签: js
分享给朋友:

相关文章

js 实现倒计时

js 实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是两种常见实现方式。 使用 setInterval 实…

js实现投球

js实现投球

实现投球动画的基本思路 使用JavaScript和CSS动画结合的方式模拟投球效果。核心是通过改变元素的位置、旋转和缩放属性,配合定时器或CSS过渡实现平滑动画。 创建基础HTML结构 <…

js怎么实现异步

js怎么实现异步

异步实现方法 JavaScript中实现异步操作主要通过以下几种方式: Promise Promise是ES6引入的异步解决方案,用于处理异步操作的成功或失败状态。 const promise =…

js实现上传图片

js实现上传图片

使用HTML5的File API实现图片上传 HTML5的File API允许通过JavaScript访问用户选择的文件。需要创建一个文件输入元素,并监听其change事件。 <input t…

js实现弹框

js实现弹框

使用 alert 实现简单弹框 JavaScript 的 alert 方法可以直接显示一个简单的弹框,内容为纯文本: alert("这是一个简单的弹框"); 使用 confirm 实现确认弹框…

js实现文件夹

js实现文件夹

使用JavaScript创建文件夹 在浏览器端的JavaScript中无法直接操作文件系统创建文件夹,这是出于安全考虑。但在Node.js环境中可以通过文件系统模块(fs)实现。 Node.js中使…