当前位置:首页 > JavaScript

js实现hashset

2026-01-31 17:20:27JavaScript

实现 HashSet 的基本结构

使用 JavaScript 的 ObjectMap 作为底层存储结构。Object 的键是字符串,而 Map 支持任意类型的键。

class HashSet {
  constructor() {
    this.items = {};
    // 或使用 Map
    // this.items = new Map();
  }
}

添加元素

使用对象的属性或 Mapset 方法添加元素。注意处理键的类型转换。

add(value) {
  this.items[value] = true;
  // 或使用 Map
  // this.items.set(value, true);
}

检查元素是否存在

通过检查对象的属性或 Maphas 方法来判断元素是否存在。

has(value) {
  return this.items[value] === true;
  // 或使用 Map
  // return this.items.has(value);
}

删除元素

使用 delete 操作符删除对象的属性,或 Mapdelete 方法移除元素。

delete(value) {
  if (this.has(value)) {
    delete this.items[value];
    // 或使用 Map
    // this.items.delete(value);
    return true;
  }
  return false;
}

获取集合大小

通过 Object.keysMapsize 属性获取集合中元素的数量。

size() {
  return Object.keys(this.items).length;
  // 或使用 Map
  // return this.items.size;
}

清空集合

直接将底层存储结构重置为空对象或清空 Map

clear() {
  this.items = {};
  // 或使用 Map
  // this.items.clear();
}

完整实现示例

以下是使用 Object 实现的完整 HashSet 类:

js实现hashset

class HashSet {
  constructor() {
    this.items = {};
  }

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

  has(value) {
    return this.items[value] === true;
  }

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

  size() {
    return Object.keys(this.items).length;
  }

  clear() {
    this.items = {};
  }
}

使用示例

const set = new HashSet();
set.add(1);
set.add(2);
console.log(set.has(1)); // true
console.log(set.size()); // 2
set.delete(1);
console.log(set.has(1)); // false
set.clear();
console.log(set.size()); // 0

注意事项

  • 使用 Object 作为存储时,所有键会被转换为字符串。例如 set.add(1)set.add("1") 会视为同一个键。
  • 如果需要支持任意类型的键(包括对象),应使用 Map 作为底层存储。
  • Map 的性能在某些场景下优于 Object,尤其是在频繁添加和删除键值对的场景。

标签: jshashset
分享给朋友:

相关文章

原生js实现轮播图

原生js实现轮播图

基本结构搭建 HTML部分需要包含轮播图容器、图片列表及导航按钮。结构示例如下: <div class="slider-container"> <div class="slid…

js轮播图实现原理

js轮播图实现原理

轮播图的基本原理 轮播图通过动态切换显示的内容(图片、文本等)实现视觉上的滑动效果。核心原理是利用CSS和JavaScript控制元素的显示与隐藏,或通过变换位置实现滑动动画。 实现方法一:CSS…

js实现图

js实现图

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

js怎么实现异步

js怎么实现异步

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

js实现文字滚动

js实现文字滚动

实现文字滚动的几种方法 使用CSS动画实现滚动 通过CSS的@keyframes和transform属性可以实现平滑的文字滚动效果。 <style> .scroll-text { w…

js分页实现

js分页实现

分页的基本原理 分页的核心是通过计算当前页码和数据偏移量,从服务器或本地数据中截取对应范围的数据进行展示。通常需要以下参数:当前页码(currentPage)、每页条数(pageSize)、总数据量(…