当前位置:首页 > JavaScript

js 实现set

2026-04-05 07:48:23JavaScript

实现 Set 数据结构的方法

在 JavaScript 中,可以通过多种方式实现类似 Set 的数据结构。以下是几种常见的方法:

使用对象模拟 Set

通过对象的键唯一性来模拟 Set 的功能:

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

  clear() {
    this.items = {};
  }

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

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

使用数组实现 Set

通过数组的 includes 方法检查元素是否存在:

class ArraySet {
  constructor() {
    this.elements = [];
  }

  add(element) {
    if (!this.has(element)) {
      this.elements.push(element);
    }
  }

  has(element) {
    return this.elements.includes(element);
  }

  delete(element) {
    const index = this.elements.indexOf(element);
    if (index !== -1) {
      this.elements.splice(index, 1);
      return true;
    }
    return false;
  }

  size() {
    return this.elements.length;
  }

  values() {
    return [...this.elements];
  }
}

使用 ES6 原生 Set

现代 JavaScript 已经内置了 Set 数据结构:

const set = new Set();

// 添加元素
set.add(1);
set.add(2);
set.add(3);

// 检查元素是否存在
console.log(set.has(2)); // true

// 删除元素
set.delete(2);

// 获取大小
console.log(set.size); // 2

// 清空集合
set.clear();

实现 Set 运算

扩展 Set 功能,实现并集、交集、差集等运算:

js 实现set

class AdvancedSet extends Set {
  union(otherSet) {
    return new AdvancedSet([...this, ...otherSet]);
  }

  intersection(otherSet) {
    return new AdvancedSet([...this].filter(x => otherSet.has(x)));
  }

  difference(otherSet) {
    return new AdvancedSet([...this].filter(x => !otherSet.has(x)));
  }

  isSubset(otherSet) {
    return [...this].every(x => otherSet.has(x));
  }
}

这些方法展示了在 JavaScript 中实现 Set 数据结构的不同方式,从基础实现到利用语言内置功能,以及扩展集合运算的能力。

标签: jsset
分享给朋友:

相关文章

js实现验证

js实现验证

验证表单输入 使用JavaScript验证表单输入是常见的需求。可以通过监听表单提交事件,检查输入字段是否符合要求。 document.getElementById('myForm').addEve…

js 实现vue

js 实现vue

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

js 实现链表

js 实现链表

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

js实现防洪

js实现防洪

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

js实现求导

js实现求导

实现数值求导的方法 在JavaScript中实现求导通常采用数值方法,因为JavaScript不是符号计算语言。以下是常见的数值微分方法: 中心差分法 中心差分法提供较高精度的导数近似:…

js怎么实现异步

js怎么实现异步

异步实现方法 JavaScript中实现异步操作主要通过以下几种方式: Promise Promise是ES6引入的异步解决方案,用于处理异步操作的成功或失败状态。 const promise =…