当前位置:首页 > JavaScript

js 实现集合

2026-02-02 05:36:58JavaScript

集合的基本概念

集合是一种无序且元素唯一的数据结构,常用于存储不重复的值。JavaScript 原生提供了 Set 对象来实现集合功能。

创建集合

使用 Set 构造函数可以创建一个空集合,或通过传递一个可迭代对象(如数组)初始化集合:

const emptySet = new Set();
const setFromArray = new Set([1, 2, 3, 2]); // 重复的 2 会被自动去重
console.log(setFromArray); // 输出: Set {1, 2, 3}

添加元素

通过 add 方法向集合中添加元素。如果元素已存在,集合不会发生变化:

const set = new Set();
set.add(1);
set.add(2);
set.add(1); // 重复添加无效
console.log(set); // 输出: Set {1, 2}

删除元素

使用 delete 方法移除集合中的指定元素,返回布尔值表示是否删除成功:

set.delete(2); // 返回 true
set.delete(99); // 返回 false

检查元素是否存在

通过 has 方法检查集合是否包含某个元素:

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

获取集合大小

使用 size 属性获取集合中元素的数量:

console.log(set.size); // 输出: 1

清空集合

调用 clear 方法清空集合中的所有元素:

set.clear();
console.log(set.size); // 输出: 0

遍历集合

集合可以通过 forEach 或迭代器(如 for...of)遍历:

const set = new Set(['a', 'b', 'c']);
set.forEach(value => console.log(value)); // 依次输出 'a', 'b', 'c'

for (const item of set) {
  console.log(item); // 依次输出 'a', 'b', 'c'
}

集合运算

原生 Set 不直接支持并集、交集、差集等操作,但可以通过以下方式实现:

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

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

交集:获取两个集合共有的元素

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

差集:获取存在于集合 A 但不在集合 B 中的元素

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

集合与数组转换

集合可以通过扩展运算符或 Array.from 转换为数组:

js 实现集合

const set = new Set([1, 2, 3]);
const array1 = [...set];
const array2 = Array.from(set);

注意事项

  • 集合中的元素通过严格相等(===)比较唯一性。
  • NaN 在集合中被视为与自身相等,尽管 NaN !== NaN
  • 对象引用是唯一的,即使内容相同也会被视为不同元素。

标签: js
分享给朋友:

相关文章

js实现

js实现

JavaScript 实现方法 JavaScript 是一种广泛使用的编程语言,适用于网页开发、服务器端编程以及移动应用开发。以下是几种常见的 JavaScript 实现方法: 网页交互功能 使用…

js实现报表

js实现报表

使用JavaScript实现报表 在JavaScript中实现报表功能可以通过多种方式完成,常见的方法包括使用原生JavaScript、第三方库(如Chart.js、D3.js)或结合后端数据渲染。以…

js实现预览

js实现预览

文件上传预览实现 使用JavaScript实现文件上传预览功能,可以通过FileReader对象读取文件内容并显示预览。以下代码支持图片、文本和PDF文件的预览: // HTML部分需要包含…

节流js实现

节流js实现

节流(Throttle)的实现原理 节流是一种限制函数执行频率的技术,确保函数在一定时间间隔内最多执行一次。适用于高频触发事件(如滚动、输入、窗口调整等)的场景。 基础实现方式 使用时间戳判断是否执…

js实现正交

js实现正交

正交的概念 正交在数学和计算机科学中通常指两个向量垂直或线性无关。在编程中,正交性常被用于设计模块化、低耦合的系统。 向量正交判断 判断两个向量是否正交可以通过点积是否为0来实现: functio…

js实现图片放大

js实现图片放大

使用 CSS transform 实现图片放大 通过 CSS 的 transform: scale() 属性实现图片放大效果。当鼠标悬停时,图片会平滑放大。 const img = document…