JavaScript 实现哈希表(HashTable)实例分析

作者:木棉

时间:2026-10-30

浏览:344

本文介绍如何在 JavaScript 中利用 Object 特性实现哈希表。通过封装 add、getValue、remove 等核心方法,构建精简版 HashTable 类,并提供完整的 JavaScript 实现代码及使用示例,帮助开发者在缺乏原生哈希表支持时进行高效的数据存储与检索。

文章目录

JavaScript 哈希表简介

一、JavaScript 哈希表简介

在 JavaScript 语言中,并没有内置类似 Java 或 C# 中的哈希表数据结构。对于习惯使用这种数据结构的开发者来说,这可能会带来不便。深入观察可以发现,JavaScript 中 Object 对象的属性机制与哈希表有着极高的相似性。

例如:


var person = {};
person["name"] = "关羽";

我们只需在此基础上封装若干哈希表相关函数,即可得到一个精简版的哈希表实现。

需要加入的函数如下:

函数名 说明 返回值
add(key,value) 添加项 无
getValue(key) 根据key取值 object
remove(key) 根据key删除一项 无
containsKey(key) 是否包含某个key bool
containsValue(value) 是否包含某个值 bool
getValues() 获取所有的值的数组 array
getKeys() 获取所有的key的数组 array
getSize() 获取项总数 int
clear() 清空哈希表 无

代码实现

二、代码实现

具体实现细节可参考下方代码,整体逻辑并不复杂。


function HashTable() {
 var size = 0;
 var entry = new Object();
 this.add = function (key, value) {
 if (!this.containsKey(key)) {
 size++;
 }
 entry[key] = value;
 }
 this.getValue = function (key) {
 return this.containsKey(key) ? entry[key] : null;
 }
 this.remove = function (key) {
 if (this.containsKey(key) && (delete entry[key])) {
 size--;
 }
 }
 this.containsKey = function (key) {
 return (key in entry);
 }
 this.containsValue = function (value) {
 for (var prop in entry) {
 if (entry[prop] == value) {
 return true;
 }
 }
 return false;
 }
 this.getValues = function () {
 var values = new Array();
 for (var prop in entry) {
 values.push(entry[prop]);
 }
 return values;
 }
 this.getKeys = function () {
 var keys = new Array();
 for (var prop in entry) {
 keys.push(prop);
 }
 return keys;
 }
 this.getSize = function () {
 return size;
 }
 this.clear = function () {
 size = 0;
 entry = new Object();
 }
}

简单使用示例:


var manHT = new HashTable();
manHT.add("p1","刘备");
manHT.add("p2","关羽");
$("#div1").text(manHT.getValue("p1"));

 

以上是本文的全部内容,希望对大家有所帮助!

实用工具推荐

电子包浆

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

使用 ›
图片压缩

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

使用 ›
相关文章