JavaScript 实现简易哈希表(HashTable)类

作者:木棉

时间:2026-10-29

浏览:303

本文介绍如何在 JavaScript 中通过 Object 对象实现一个简易的哈希表(HashTable)类。该实现包含添加、删除、查找、计数和清空等核心功能,适用于简单的键值对存储场景。文章提供了完整的构造函数定义及常用方法的代码示例,帮助开发者理解基于对象属性的哈希表基本逻辑。

文章目录

HashTable 类定义与实现

定义一个名为 Hashtable 的构造函数。


{

在构造函数内部,初始化一个名为 _hash 的属性,其值为一个新的 Object 实例,用于存储实际的键值对数据。


定义 add 方法,用于向哈希表中添加键值对。该方法接收 key 和 value 两个参数。


首先检查传入的 key 是否已定义(即不为 undefined)。如果 key 未定义,则操作无效。


在 key 存在的前提下,调用 contains 方法检查该 key 是否已存在于哈希表中。如果不存在(返回 false),则执行添加操作。


执行添加逻辑:将 value 赋值给 this._hash[key]。这里使用三元运算符处理 value 为 undefined 的情况,若 value 未定义则存储 null,否则存储原值。


如果添加成功(即 key 之前不存在),返回 true。


如果 key 已存在(contains 返回 true),则不执行添加操作,进入 else 分支。


当 key 已存在时,返回 false,表示添加失败。


                            }

如果初始检查发现 key 为 undefined,则直接返回 false,表示添加失败。


此处代码结构显示 add 方法结束的大括号缺失或错位,根据上下文逻辑,此处应为 add 方法结束后的下一个方法定义或类定义结束。结合后续代码,t11 是 remove 方法,因此 t9-t10 后的逻辑应闭合 add 方法。


                        }
                    }

定义 remove 方法,接收 key 参数。通过 delete 操作符从 this._hash 对象中删除指定的 key 及其对应的值。


this.count = function(){var i=0;for(var k in this._hash){i++;} return i;}


定义 items 方法,接收 key 参数。该方法直接返回 this._hash 中对应 key 的值。注意:若 key 不存在,将返回 undefined。


定义 contains 方法,接收 key 参数。通过检查 this._hash[key] 的类型是否为 undefined 来判断 key 是否存在。如果类型不是 undefined,则返回 true,否则返回 false。


定义 clear 方法,用于清空哈希表。通过遍历 this._hash 对象的所有属性,并逐个使用 delete 操作符删除它们,从而实现清空效果。



} 

HashTable 使用示例

创建一个 Hashtable 类的实例,赋值给变量 a。



调用 a 的 add 方法,添加键 "aa"。由于未提供 value 参数,根据 add 方法的逻辑,其值将被存储为 null。


调用 a 的 add 方法,添加键 "bb",值为 2342。


再次调用 a 的 add 方法,添加键 "bb",值为 2342。由于 key "bb" 已存在,根据 add 方法的逻辑,此操作将返回 false,且数据不会重复或覆盖(取决于具体实现意图,此处逻辑是阻止重复添加)。



调用 a 的 remove 方法,移除键 "aa" 及其对应的值。



调用 a 的 count 方法,获取当前哈希表中的元素数量,并通过 alert 弹窗显示。此时表中应仅剩 "bb" 一个元素(假设 t19 未成功添加)。



调用 a 的 contains 方法,检查键 "bb" 是否存在,并通过 alert 弹窗显示结果。预期结果为 true。



调用 a 的 contains 方法,检查键 "aa" 是否存在,并通过 alert 弹窗显示结果。由于 t20 已移除 "aa",预期结果为 false。



调用 a 的 items 方法,获取键 "bb" 对应的值,并通过 alert 弹窗显示。预期结果为 2342。



实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章