当前位置:首页 > JavaScript

js实现set

2026-02-01 12:15:11JavaScript

JavaScript 实现 Set 数据结构

在 JavaScript 中,Set 是一种集合数据结构,用于存储唯一值。以下是几种实现 Set 的方法:

使用原生 ES6 Set

ES6 提供了内置的 Set 对象,可以直接使用:

const mySet = new Set();
mySet.add(1);
mySet.add(2);
mySet.add(1); // 重复值会被忽略

console.log(mySet.has(1)); // true
console.log(mySet.size); // 2

手动实现 Set

如果需要手动实现一个 Set,可以使用对象或数组来模拟:

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

CustomSet.prototype.add = function(value) {
  if (!this.has(value)) {
    this.items[value] = value;
    return true;
  }
  return false;
};

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

CustomSet.prototype.delete = function(value) {
  if (this.has(value)) {
    delete this.items[value];
    return true;
  }
  return false;
};

CustomSet.prototype.size = function() {
  return Object.keys(this.items).length;
};

// 使用示例
const set = new CustomSet();
set.add(1);
set.add(2);
console.log(set.size()); // 2

使用数组实现 Set

另一种方式是使用数组来存储唯一值:

js实现set

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

ArraySet.prototype.add = function(value) {
  if (this.items.indexOf(value) === -1) {
    this.items.push(value);
    return true;
  }
  return false;
};

ArraySet.prototype.has = function(value) {
  return this.items.indexOf(value) !== -1;
};

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

ArraySet.prototype.size = function() {
  return this.items.length;
};

性能比较

  • ES6 Set 是最高效的实现,底层优化良好。
  • 对象实现的 CustomSet 适合键为字符串或简单类型的场景。
  • 数组实现的 ArraySet 在频繁查找或删除时性能较差。

选择哪种实现取决于具体需求。现代开发中推荐直接使用 ES6 Set

标签: jsset
分享给朋友:

相关文章

vue.js实现轮播

vue.js实现轮播

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

js 实现vue

js 实现vue

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

js类实现

js类实现

使用类实现 JavaScript 功能 在 JavaScript 中,类(Class)是一种语法糖,基于原型继承机制。通过 class 关键字可以更直观地定义对象模板。 基本类定义 class…

js实现交换

js实现交换

交换变量的方法 在JavaScript中,交换两个变量的值有多种方法。以下是常见的几种实现方式: 使用临时变量 通过引入一个临时变量来存储其中一个变量的值,实现交换: let a = 1; le…

js验证码的实现

js验证码的实现

验证码的基本实现原理 验证码(CAPTCHA)的核心目标是区分人类用户和自动化程序。JavaScript可用于生成或验证客户端验证码,但需注意纯前端验证可能被绕过,通常需结合后端验证。 纯前端验证码…

js进度条实现

js进度条实现

使用HTML和CSS创建基础结构 在HTML中创建一个容器元素用于显示进度条,通常使用<div>元素。CSS用于设置进度条的样式,包括宽度、高度、颜色和圆角等属性。 <div cl…