当前位置:首页 > 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 实现vue模板

js 实现vue模板

实现 Vue 模板的 JavaScript 方法 通过原生 JavaScript 可以实现类似 Vue 的模板渲染功能,主要包括数据绑定、指令处理和模板解析。以下是核心实现思路: 数据绑定与…

js实现图片预览

js实现图片预览

使用FileReader API实现图片预览 通过FileReader对象读取用户选择的图片文件并显示预览: const input = document.getElementById('image…

js如何实现继承

js如何实现继承

原型链继承 通过将子类的原型指向父类的实例实现继承。子类实例能够访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Parent…

js 实现vue

js 实现vue

Vue.js 的基本实现 在 JavaScript 中实现 Vue.js 的核心功能,可以通过数据绑定、响应式系统和虚拟 DOM 来实现。以下是实现 Vue.js 核心功能的简化版本。 数据响应式系…

js实现变形

js实现变形

使用 CSS 和 JavaScript 实现元素变形 在 JavaScript 中实现变形效果通常结合 CSS 的 transform 属性,通过动态修改该属性实现元素的旋转、缩放、倾斜或平移。 基…

js实现投球

js实现投球

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