当前位置:首页 > JavaScript

js 实现set

2026-01-31 15:38:57JavaScript

使用对象模拟 Set

在 JavaScript 中可以通过对象键的唯一性模拟 Set 功能。创建一个空对象,利用键不重复的特性存储元素。

function CustomSet() {
  this.items = {};
}

CustomSet.prototype.add = function(value) {
  this.items[value] = true;
};

CustomSet.prototype.has = function(value) {
  return this.items.hasOwnProperty(value);
};

CustomSet.prototype.delete = function(value) {
  delete this.items[value];
};

CustomSet.prototype.clear = function() {
  this.items = {};
};

使用数组实现 Set

通过数组存储元素,在操作时检查元素是否存在。这种方法在性能上不如对象实现,但更直观。

js 实现set

function ArraySet() {
  this.items = [];
}

ArraySet.prototype.add = function(value) {
  if (!this.items.includes(value)) {
    this.items.push(value);
  }
};

ArraySet.prototype.has = function(value) {
  return this.items.includes(value);
};

ArraySet.prototype.delete = function(value) {
  const index = this.items.indexOf(value);
  if (index !== -1) {
    this.items.splice(index, 1);
  }
};

ES6 原生 Set 使用

现代 JavaScript 已内置 Set 对象,直接使用即可获得最佳性能和完善的功能。

js 实现set

const mySet = new Set();
mySet.add(1);
mySet.add(5);
mySet.has(1); // true
mySet.delete(5);
mySet.size; // 1

实现交集/并集/差集

基于原生 Set 实现集合运算,这些方法可以添加到自定义 Set 实现中。

// 并集
function union(setA, setB) {
  return new Set([...setA, ...setB]);
}

// 交集
function intersection(setA, setB) {
  return new Set([...setA].filter(x => setB.has(x)));
}

// 差集
function difference(setA, setB) {
  return new Set([...setA].filter(x => !setB.has(x)));
}

性能优化建议

对于大规模数据操作,建议使用原生 Set。自定义实现中,对象方式比数组方式性能更好,因为对象键查找时间复杂度是 O(1),而数组查找是 O(n)。

当需要保持插入顺序时,可以结合数组和对象实现,用对象存储存在性,用数组维护顺序。

标签: jsset
分享给朋友:

相关文章

js实现计算器

js实现计算器

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

js实现全选

js实现全选

实现全选功能的方法 在JavaScript中实现全选功能通常涉及监听全选复选框的点击事件,并根据其状态控制其他复选框的选中状态。以下是几种常见的实现方式: 基础DOM操作实现 通过获取所有目标复选框…

js实现乘

js实现乘

JavaScript 实现乘法运算 在 JavaScript 中实现乘法运算可以通过多种方式完成,包括基本运算符、函数封装以及高级算法(如大数乘法)。以下是几种常见方法: 使用基本乘法运算符 Jav…

js实现二叉树

js实现二叉树

二叉树的基本概念 二叉树是一种树形数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的常见操作包括插入、删除、遍历等。 二叉树的节点定义 在JavaScript中,二叉树的节点可…

js实现图

js实现图

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

js实现图片

js实现图片

图片加载与显示 在JavaScript中,可以通过Image对象动态加载图片。创建实例后设置src属性触发加载,通过onload回调处理加载完成后的操作: const img = new Ima…