当前位置:首页 > JavaScript

js实现set

2026-02-01 12:15:11JavaScript

JavaScript 实现 Set 数据结构

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

js实现set

使用原生 ES6 Set

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

js实现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

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

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
分享给朋友:

相关文章

js实现打印

js实现打印

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

js 实现vue

js 实现vue

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

js实现抽奖

js实现抽奖

实现抽奖功能的基本思路 抽奖功能的核心是随机选择奖项并展示结果。可以通过数组存储奖项,利用随机数生成索引,最后通过动画增强用户体验。 准备奖项数据 定义一个数组存储奖项信息,每个奖项可以包含名称、图…

js节流实现

js节流实现

节流的概念 节流(Throttle)是一种限制函数执行频率的技术,确保函数在一定时间间隔内只执行一次。常用于滚动事件、窗口调整等高频触发的场景。 基础实现方法 使用时间戳判断是否执行函数:…

js怎么实现异步

js怎么实现异步

异步实现方法 JavaScript中实现异步操作主要通过以下几种方式: Promise Promise是ES6引入的异步解决方案,用于处理异步操作的成功或失败状态。 const promise =…

js 实现页面刷新

js 实现页面刷新

使用 location.reload() location.reload() 是原生 JavaScript 提供的页面刷新方法。调用该方法会重新加载当前页面,相当于点击浏览器的刷新按钮。 // 基本…