js实现HashTable(哈希表)的实例分析


Posted in Javascript onNovember 21, 2016

一、javascript哈希表简介

javascript里面是没有哈希表的,一直在java,C#中有时候用到了这一种数据结构,javascript里面若没有,感觉非常不顺手。细细看来,其实javascript的object的属性其实与哈希表非常类似。

如:

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

我们只需要在其基础上再封装一些HashTable的函数,就能够得到一个精简版的哈希表。

加入函数如下:

函数名 说明 返回值
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"));

 

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

Javascript 相关文章推荐
新浪的图片新闻效果
Jan 13 Javascript
JavaScript QueryString解析类代码
Jan 17 Javascript
javascript权威指南 学习笔记之null和undefined
Sep 25 Javascript
将input file的选择的文件清空的两种解决方案
Oct 21 Javascript
jquery实现的下拉和收缩效果示例
Aug 21 Javascript
jQuery大于号(>)选择器的作用解释
Jan 13 Javascript
Web表单提交之disabled问题js解决方法
Jan 13 Javascript
深入理解JavaScript系列(36):设计模式之中介者模式详解
Mar 04 Javascript
js中DOM事件绑定分析
Mar 18 Javascript
JS实现的文件拖拽上传功能示例
May 21 Javascript
Vue实现导航栏的显示开关控制
Nov 01 Javascript
jQuery鼠标滑过横向时间轴样式(代码详解)
Nov 01 jQuery
详解js中call与apply关键字的作用
Nov 21 #Javascript
微信小程序购物商城系统开发系列-目录结构介绍
Nov 21 #Javascript
微信小程序购物商城系统开发系列-工具篇的介绍
Nov 21 #Javascript
全面解析node 表单的图片上传
Nov 21 #Javascript
利用fecha进行JS日期处理
Nov 21 #Javascript
Bootstrap Modal遮罩弹出层(完整版)
Nov 21 #Javascript
Bootstrap Modal遮罩弹出层代码分享
Nov 21 #Javascript
You might like
php执行sql语句的写法
2009/03/10 PHP
PHP设计模式之观察者模式(Observer)详细介绍和代码实例
2014/04/08 PHP
php判断类是否存在函数class_exists用法分析
2014/11/14 PHP
PHP中使用substr()截取字符串出现中文乱码问题该怎么办
2015/10/21 PHP
详谈配置phpstorm完美支持Codeigniter(CI)代码自动完成(代码提示)
2017/04/07 PHP
JavaScript类和继承 prototype属性
2010/09/03 Javascript
jQueryMobile之Helloworld与页面切换的方法
2015/02/04 Javascript
javascript实现动态表头及表列的展现方法
2015/07/14 Javascript
jquery实现叠层3D文字特效代码分享
2015/08/21 Javascript
JS实现网页标题栏显示当前时间和日期的完整代码
2015/11/02 Javascript
js实现图片上传并正常显示
2015/12/19 Javascript
AngularJS动态加载模块和依赖的方法分析
2016/11/08 Javascript
javascript实现的字符串转换成数组操作示例
2019/06/13 Javascript
Node绑定全局TraceID的实现方法
2019/11/14 Javascript
python实现DNS正向查询、反向查询的例子
2014/04/25 Python
跟老齐学Python之集合(set)
2014/09/24 Python
python监控文件或目录变化
2016/06/07 Python
简单谈谈python的反射机制
2016/06/28 Python
Python实现的计算马氏距离算法示例
2018/04/03 Python
Django 跨域请求处理的示例代码
2018/05/02 Python
Python基于pandas实现json格式转换成dataframe的方法
2018/06/22 Python
Python实现操纵控制windows注册表的方法分析
2019/05/24 Python
Anaconda+vscode+pytorch环境搭建过程详解
2020/05/25 Python
python实现excel公式格式化的示例代码
2020/12/23 Python
css3和jquery实现的可折叠导航菜单适合放在手机网页的导航菜单
2014/09/02 HTML / CSS
HTML5 canvas基本绘图之图形变换
2016/06/27 HTML / CSS
Boden英国官网:英国知名原创时装品牌
2018/11/06 全球购物
澳大利亚珍珠首饰购物网站:Vayo Pearls
2019/03/11 全球购物
SQL面试题
2013/12/09 面试题
预备党员转正思想汇报
2014/01/12 职场文书
安全检查管理制度
2014/02/02 职场文书
《寓言两则》教学反思
2014/02/27 职场文书
党员干部群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
三八妇女节标语
2014/10/09 职场文书
2014年安全员工作总结
2014/11/13 职场文书
pytorch 6 batch_train 批训练操作
2021/05/28 Python