当前位置:首页 > JavaScript

js 实现集合

2026-03-15 05:20:35JavaScript

实现集合的基本方法

在JavaScript中,集合(Set)是一种无序且元素唯一的数据结构。可以使用原生Set对象或手动实现类似功能。

使用原生Set对象:

const mySet = new Set();
mySet.add(1);
mySet.add(2);
mySet.add(1); // 重复元素不会被添加
console.log(mySet.size); // 输出2

手动实现集合类:

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

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

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

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

集合操作的方法

实现并集(union)操作:

union(otherSet) {
  const unionSet = new MySet();
  Object.values(this.items).forEach(value => unionSet.add(value));
  Object.values(otherSet.items).forEach(value => unionSet.add(value));
  return unionSet;
}

实现交集(intersection)操作:

js 实现集合

intersection(otherSet) {
  const intersectionSet = new MySet();
  Object.values(this.items).forEach(value => {
    if (otherSet.has(value)) {
      intersectionSet.add(value);
    }
  });
  return intersectionSet;
}

实现差集(difference)操作:

difference(otherSet) {
  const differenceSet = new MySet();
  Object.values(this.items).forEach(value => {
    if (!otherSet.has(value)) {
      differenceSet.add(value);
    }
  });
  return differenceSet;
}

集合的扩展功能

实现子集判断:

isSubsetOf(otherSet) {
  return Object.values(this.items).every(value => 
    otherSet.has(value)
  );
}

实现集合转数组:

js 实现集合

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

实现清空集合:

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

ES6 Set的高级用法

使用扩展运算符进行集合操作:

const setA = new Set([1, 2, 3]);
const setB = new Set([2, 3, 4]);

// 并集
const union = new Set([...setA, ...setB]);

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

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

使用Set进行数组去重:

const arr = [1, 2, 2, 3, 4, 4];
const uniqueArr = [...new Set(arr)];

标签: js
分享给朋友:

相关文章

js实现计算器

js实现计算器

实现基础计算器功能 使用JavaScript创建一个基础计算器需要处理数字输入、运算符逻辑和结果显示。以下是一个简单的实现示例: let currentInput = '0'; let previo…

js防抖和节流实现

js防抖和节流实现

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

js实现拷贝

js实现拷贝

实现文本拷贝 使用 document.execCommand 方法(已废弃但兼容性较好): function copyText(text) { const textarea = document…

js实现论坛

js实现论坛

实现论坛的基本功能 使用JavaScript实现一个论坛需要结合前端和后端技术。前端可以使用React、Vue或Angular等框架,后端可以选择Node.js配合Express或Koa框架。数据库可…

js实现vr

js实现vr

使用WebXR API实现VR体验 WebXR是浏览器中实现VR和AR体验的标准API,它取代了早期的WebVR。现代浏览器如Chrome、Edge和Firefox已支持WebXR。 // 初始化W…

js钟表实现

js钟表实现

实现JavaScript钟表的基本方法 创建一个简单的JavaScript钟表可以通过以下步骤完成,涵盖数字和模拟两种形式。 数字钟表实现 HTML结构只需一个显示时间的容器: <div i…