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 相关文章推荐
JavaScript基本对象
Jan 11 Javascript
初学Jquery插件制作 在SageCRM的查询屏幕隐藏部分行的功能
Dec 26 Javascript
JavaScript中的对象与JSON
Jul 03 Javascript
原生JavaScript实现异步多文件上传
Dec 02 Javascript
jsonp跨域请求数据实现手机号码查询实例分析
Dec 12 Javascript
jQuery简单入门示例之用户校验demo示例
Jul 09 Javascript
BootStrap网页中代码显示用法详解
Oct 21 Javascript
AngularJS 获取ng-repeat动态生成的ng-model值实例详解
Nov 29 Javascript
BootStrap中
Dec 10 Javascript
jQuery模拟实现天猫购物车动画效果实例代码
May 25 jQuery
使用VUE实现在table中文字信息超过5个隐藏鼠标移到时弹窗显示全部
Sep 16 Javascript
Nuxt的路由动画效果案例
Nov 06 Javascript
详解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分页类
2013/10/26 PHP
jquery+php+ajax显示上传进度的多图片上传并生成缩略图代码
2014/10/15 PHP
通过Email发送PHP错误的方法
2015/07/20 PHP
PHP利用二叉堆实现TopK-算法的方法详解
2017/04/24 PHP
js加解密 脚本解密
2008/02/22 Javascript
javascript 动态参数判空操作
2008/12/22 Javascript
javascript 获取模态窗口的滚动位置代码
2013/08/06 Javascript
jQuery基础_入门必看知识点
2016/07/04 Javascript
JS中如何比较两个Json对象是否相等实例代码
2016/07/13 Javascript
JS中Array数组学习总结
2017/01/18 Javascript
Node.js  事件循环详解及实例
2017/08/06 Javascript
js获取文件里面的所有文件名(实例)
2017/10/17 Javascript
在vue.js中使用JSZip实现在前端解压文件的方法
2018/09/05 Javascript
IE9 elementUI文件上传的问题解决
2018/10/17 Javascript
生产制造追溯系统之在线打印功能
2019/06/03 Javascript
vue+AI智能机器人回复功能实现
2020/07/16 Javascript
[55:35]DOTA2-DPC中国联赛 正赛 CDEC vs Dragon BO3 第二场 1月22日
2021/03/11 DOTA
python k-近邻算法实例分享
2014/06/11 Python
Python矩阵常见运算操作实例总结
2017/09/29 Python
python 字段拆分详解
2019/12/17 Python
HTML5 Notification(桌面提醒)功能使用实例
2014/03/17 HTML / CSS
英国打印机墨盒销售网站:Ink Factory
2019/10/07 全球购物
最畅销的视频游戏享受高达90%的折扣:CDKeys
2020/02/10 全球购物
进程的查看和调度分别使用什么命令
2015/03/25 面试题
珍惜水资源建议书
2014/03/12 职场文书
推荐信模板
2014/05/09 职场文书
环卫工人节活动总结
2014/08/29 职场文书
教师工作表现自我评价
2015/03/05 职场文书
企业党员岗位承诺书
2015/04/27 职场文书
2015年车间安全管理工作总结
2015/05/13 职场文书
团队执行力培训心得体会
2015/08/15 职场文书
推普标语口号大全
2015/12/26 职场文书
2019年最新借条范本!
2019/07/08 职场文书
《卧薪尝胆》读后感3篇
2019/12/26 职场文书
Python+uiautomator2实现自动刷抖音视频功能
2021/04/29 Python
详解SpringBoot异常处理流程及原理
2021/06/21 Java/Android