当前位置:首页 > JavaScript

js实现的集合

2026-02-02 14:28:34JavaScript

JavaScript 中的集合实现

JavaScript 提供了多种方式来实现集合(Set)数据结构,以下是常见的几种方法:

使用原生 Set 对象

ES6 引入了原生的 Set 对象,它允许存储任何类型的唯一值:

const mySet = new Set();
mySet.add(1);
mySet.add(5);
mySet.add('some text');
console.log(mySet.has(1)); // true
console.log(mySet.size); // 3
mySet.delete(5); // 移除5

Set 对象自动处理唯一性,重复添加的值会被忽略。

使用对象模拟集合

在 ES6 之前,可以使用普通对象来模拟集合:

const set = {};
set['key1'] = true;
set['key2'] = true;
if (set['key1']) {
    console.log('key1 exists');
}
delete set['key1'];

这种方法只能使用字符串作为键,且无法直接存储对象引用。

实现完整集合功能

如需完整集合功能(并集、交集等),可以扩展 Set 类:

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

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

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

使用数组实现集合

虽然效率较低,但可以用数组模拟集合:

const set = [];
function add(item) {
    if (!set.includes(item)) {
        set.push(item);
    }
}
function has(item) {
    return set.includes(item);
}
function remove(item) {
    const index = set.indexOf(item);
    if (index > -1) {
        set.splice(index, 1);
    }
}

性能考虑

  • 原生 Set 对象在查找、添加和删除操作上都是 O(1) 时间复杂度
  • 数组实现的集合在查找操作上是 O(n) 时间复杂度
  • 对象实现的集合在查找操作上是 O(1),但仅限于字符串键

集合操作示例

实现常见集合操作:

// 并集
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 或使用第三方库如 lodash 的集合操作方法。

js实现的集合

标签: js
分享给朋友:

相关文章

js实现倒计时

js实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时功能可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是几种常见的实现方式: 使用 setInterva…

js实现分页

js实现分页

分页的基本实现思路 在JavaScript中实现分页功能通常需要结合前端和后端逻辑。前端负责渲染分页控件和处理用户交互,后端负责提供分页数据。 前端分页实现 纯前端分页适用于数据量较小的情况,可以…

js实现轮播图

js实现轮播图

基础轮播图实现 使用HTML、CSS和JavaScript实现一个简单的自动轮播图。HTML结构包含一个容器和多个图片项。 <div class="slider"> <div…

js实现计算器

js实现计算器

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

js实现打印

js实现打印

使用window.print()方法实现打印 在JavaScript中,可以通过调用window.print()方法直接触发浏览器的打印功能。这会打开系统的打印对话框,用户可以选择打印机和设置打印选项…

js实现图片上传

js实现图片上传

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现图片上传功能。HTML部分需要创建一个文件选择输入框和一个用于…