当前位置:首页 > 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
分享给朋友:

相关文章

vue.js实现轮播

vue.js实现轮播

Vue.js 实现轮播功能 使用第三方库(推荐) Vue.js 生态中有许多成熟的轮播组件库,例如 vue-awesome-swiper 或 swiper,它们功能丰富且易于集成。 安装 swipe…

js实现

js实现

实现 JavaScript 功能的方法 在 JavaScript 中实现特定功能通常涉及多个步骤。以下是常见的实现方法: 基础语法和变量声明 使用 let 或 const 声明变量: let…

js实现计算器

js实现计算器

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

js实现文件下载

js实现文件下载

使用 a 标签下载文件 通过动态创建 a 标签并设置 download 属性实现文件下载。适用于已知文件 URL 或 Blob 数据的情况。 function downloadFile(url,…

js实现全屏

js实现全屏

实现全屏的基本方法 使用JavaScript实现全屏功能主要依赖Element.requestFullscreen()方法。现代浏览器均支持此API,但不同浏览器可能需要添加前缀。 // 触发全屏…

js实现验证

js实现验证

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