当前位置:首页 > JavaScript

js实现的集合

2026-04-07 08:04:06JavaScript

集合的概念

集合是一种无序且不重复的数据结构,常用于存储唯一值。JavaScript 原生未提供专门的集合类型,但可通过以下方式实现:

js实现的集合

使用 Set 对象(ES6+)

ES6 引入的 Set 对象是原生集合实现,支持添加、删除、查找等操作:

js实现的集合

const set = new Set();
set.add(1);          // 添加元素
set.add(2);
set.add(1);          // 重复值会被忽略
console.log(set);    // 输出: Set {1, 2}

set.delete(2);       // 删除元素
console.log(set.has(1)); // 检查存在性: true
console.log(set.size);   // 获取元素数量: 1

使用对象模拟集合

ES5 或更早版本可通过对象键的唯一性模拟集合:

const set = {};
set['key1'] = true;  // 添加元素
set['key2'] = true;
set['key1'] = true;  // 重复键会被覆盖

delete set['key2'];  // 删除元素
console.log('key1' in set); // 检查存在性: true
console.log(Object.keys(set).length); // 获取元素数量

集合操作示例

  • 并集:合并两个集合,去除重复值
    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)));

注意事项

  • Set 对象允许存储任何类型的唯一值(包括对象引用)。
  • 对象模拟集合时,键会被自动转换为字符串,可能引发类型问题。
  • Set 提供迭代方法(如 forEach),而对象模拟需手动处理。

根据需求选择原生 Set 或对象模拟,优先推荐 Set 以实现更清晰的代码逻辑。

标签: js
分享给朋友:

相关文章

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 使用JavaScript实现拖拽功能需要监听鼠标事件,包括mousedown、mousemove和mouseup。以下是实现的基本逻辑: const draggableEleme…

js实现选项卡

js实现选项卡

实现选项卡的基本思路 选项卡通常由一组标签和对应的内容面板组成。点击标签时,显示对应的内容面板,隐藏其他面板。实现这一效果需要结合HTML结构、CSS样式和JavaScript交互逻辑。 HTML结…

js实现百叶窗

js实现百叶窗

使用CSS和JavaScript实现百叶窗效果 通过CSS动画和JavaScript事件监听可以实现百叶窗效果。核心思路是将内容区域分割为多个条状元素,通过控制它们的展开/折叠状态来模拟百叶窗。 &…

js实现变形

js实现变形

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

js实现防洪

js实现防洪

防抖(Debounce)实现 防抖的核心思想是在事件触发后延迟执行回调函数,若在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口调整等场景。 function debounce(f…

js实现图

js实现图

JavaScript 实现图的常用方法 在 JavaScript 中,图(Graph)可以通过多种方式实现,常见的包括邻接表(Adjacency List)和邻接矩阵(Adjacency Matrix…