当前位置:首页 > 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 之前,可以通过对象的键唯一性模拟集合:

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]);

交集

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

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实现跳转

js实现跳转

使用 window.location 跳转 通过修改 window.location.href 实现页面跳转,这是最常用的方法。 window.location.href = 'https:/…

js实现倒计时

js实现倒计时

使用 setInterval 实现倒计时 通过 setInterval 定时器每秒更新剩余时间,适用于简单倒计时场景。 function countdown(seconds, callbac…

js实现图片轮播

js实现图片轮播

实现基础图片轮播 使用HTML、CSS和JavaScript创建一个简单的图片轮播。HTML部分定义轮播容器和图片,CSS设置样式和动画效果,JavaScript处理轮播逻辑。 <div c…

js实现图片放大缩小

js实现图片放大缩小

实现图片放大缩小的基础方法 使用CSS的transform: scale()属性可以快速实现图片的放大缩小效果。通过JavaScript动态修改该属性值: const img = document…

js实现复制到剪贴板

js实现复制到剪贴板

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

js实现图表

js实现图表

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