当前位置:首页 > 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

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

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 对象,直接使用即可获得最佳性能和完善的功能。

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)。

js 实现set

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

标签: jsset
分享给朋友:

相关文章

js实现图片放大缩小

js实现图片放大缩小

实现图片放大缩小的基础方法 使用CSS的transform: scale()属性可以快速实现图片的放大缩小效果。通过JavaScript动态修改该属性值: const img = document.…

js实现vr

js实现vr

使用WebXR API实现VR体验 WebXR是浏览器中实现VR和AR体验的标准API,它取代了早期的WebVR。现代浏览器如Chrome、Edge和Firefox已支持WebXR。 // 初始化W…

节流js实现

节流js实现

节流(Throttle)的实现原理 节流是一种限制函数执行频率的技术,确保函数在一定时间间隔内最多执行一次。适用于高频触发事件(如滚动、输入、窗口调整等)的场景。 基础实现方式 使用时间戳判断是否执…

js实现下拉刷新

js实现下拉刷新

监听触摸事件 通过监听 touchstart、touchmove 和 touchend 事件来检测用户下拉手势。记录触摸起始位置和移动距离。 let startY = 0; let currentY…

js实现按钮点击

js实现按钮点击

实现按钮点击的JavaScript方法 HTML按钮元素 在HTML中创建按钮元素,为其添加id或class以便JavaScript选择: <button id="myButton">点…

js实现的游戏

js实现的游戏

JavaScript 游戏开发基础 JavaScript 是开发网页游戏的流行选择,因其无需插件即可在浏览器中运行。以下是一些关键技术和资源: HTML5 Canvas Canvas 提供了绘制图形…