当前位置:首页 > JavaScript

js实现集合

2026-03-15 09:31:14JavaScript

JavaScript 实现集合的方法

在 JavaScript 中,可以通过多种方式实现集合(Set)数据结构,以下是几种常见的方法:

使用 ES6 的 Set 类

ES6 引入了原生的 Set 类,可以直接使用它来创建集合。

js实现集合

const set = new Set();
set.add(1);
set.add(2);
set.add(1); // 重复元素会被忽略
console.log(set.has(1)); // true
set.delete(1);
console.log(set.size); // 1

使用对象模拟集合

在 ES6 之前,可以通过对象来模拟集合的功能。

const set = {};
set['1'] = true;
set['2'] = true;
set['1'] = true; // 重复元素会被覆盖
console.log('1' in set); // true
delete set['1'];
console.log(Object.keys(set).length); // 1

实现自定义集合类

如果需要更灵活的功能,可以自定义一个集合类。

js实现集合

class MySet {
  constructor() {
    this.items = {};
  }

  add(element) {
    if (!this.has(element)) {
      this.items[element] = element;
      return true;
    }
    return false;
  }

  delete(element) {
    if (this.has(element)) {
      delete this.items[element];
      return true;
    }
    return false;
  }

  has(element) {
    return Object.prototype.hasOwnProperty.call(this.items, element);
  }

  size() {
    return Object.keys(this.items).length;
  }

  values() {
    return Object.values(this.items);
  }
}

const set = new MySet();
set.add(1);
set.add(2);
console.log(set.values()); // [1, 2]

使用数组实现集合

虽然数组的性能不如对象或 Set,但在某些场景下也可以用数组模拟集合。

const set = [];
function add(element) {
  if (!set.includes(element)) {
    set.push(element);
  }
}
add(1);
add(2);
add(1);
console.log(set); // [1, 2]

集合操作

可以扩展集合的功能,实现并集、交集、差集等操作。

function union(setA, setB) {
  const unionSet = new Set();
  setA.forEach(value => unionSet.add(value));
  setB.forEach(value => unionSet.add(value));
  return unionSet;
}

function intersection(setA, setB) {
  const intersectionSet = new Set();
  setA.forEach(value => {
    if (setB.has(value)) {
      intersectionSet.add(value);
    }
  });
  return intersectionSet;
}

const setA = new Set([1, 2, 3]);
const setB = new Set([2, 3, 4]);
console.log(union(setA, setB)); // Set {1, 2, 3, 4}
console.log(intersection(setA, setB)); // Set {2, 3}

以上方法可以根据具体需求选择适合的实现方式。ES6 的 Set 是最推荐的方式,因为它提供了完整的集合操作且性能最优。

标签: js
分享给朋友:

相关文章

js 实现链表

js 实现链表

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和指向下一个节点的指针。与数组不同,链表在内存中是非连续存储的,插入和删除操作效率较高。 链表的实现 在 JavaScrip…

js实现预览

js实现预览

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

js实现投球

js实现投球

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

js实现滚动

js实现滚动

实现滚动效果的方法 在JavaScript中实现滚动效果可以通过多种方式完成,以下是一些常见的方法: 使用window.scrollTo() window.scrollTo()方法可以将页面滚动到指…

js 实现滚动

js 实现滚动

实现滚动的方法 使用 window.scrollTo() window.scrollTo() 方法可以滚动到文档中的特定位置。可以指定 x 和 y 坐标,或者使用平滑滚动的选项。 // 滚动到指定位…

js计算器的实现

js计算器的实现

实现基础结构 HTML部分需要创建计算器的基本框架,包含显示区域和按钮。使用<div>容器包裹整个计算器,内部设置一个显示屏和多个按钮。 <div class="calculato…