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 相关文章推荐
CSS+Jquery实现页面圆角框方法大全
Dec 24 Javascript
IE8的JavaScript点击事件(onclick)不兼容的解决方法
Nov 22 Javascript
javascript中的__defineGetter__和__defineSetter__介绍
Aug 15 Javascript
js和jquery中循环的退出和继续学习记录
Sep 06 Javascript
js实现网页图片延时加载 提升网页打开速度
Jan 26 Javascript
jQuery实现查找链接文字替换属性的方法
Jun 27 Javascript
ionic组件ion-tabs选项卡切换效果实例
Aug 27 Javascript
javascript正则表达式模糊匹配IP地址功能示例
Jan 06 Javascript
详解Vue路由History mode模式中页面无法渲染的原因及解决
Sep 28 Javascript
vue2.0项目实现路由跳转的方法详解
Jun 21 Javascript
微信小程序实现单选功能
Oct 30 Javascript
微信小程序iOS下拉白屏晃动问题解决方案
Oct 12 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添加MySQL数据记录代码
2008/06/07 PHP
《PHP编程最快明白》第五讲:php目录、文件操作
2010/11/01 PHP
php实现在服务器端调整图片大小的方法
2015/06/16 PHP
PHP的Yii框架中View视图的使用进阶
2016/03/29 PHP
PHPCMS忘记后台密码的解决办法
2016/10/30 PHP
PHP实现浏览器格式化显示XML的方法示例
2019/01/22 PHP
PHP判断是否是微信打开还是浏览器打开的方法
2019/02/27 PHP
QQ登录简单实现代码
2021/03/09 Javascript
一些常用的JS功能函数代码
2009/06/23 Javascript
与jquery serializeArray()一起使用的函数,主要来方便提交表单
2011/01/31 Javascript
jquery.boxy弹出框(后隔N秒后自动隐藏/自动跳转)
2013/01/15 Javascript
在JS中如何调用JSP中的变量
2014/01/22 Javascript
innerHTML属性,outerHTML属性,textContent属性,innerText属性区别详解
2015/03/13 Javascript
JavaScript prototype属性详解
2016/10/25 Javascript
js实现hashtable的赋值、取值、遍历操作实例详解
2016/12/25 Javascript
js表单序列化判断空值的实例
2017/09/22 Javascript
vue项目中api接口管理总结
2018/04/20 Javascript
[02:22]《新闻直播间》2017年08月14日
2017/08/15 DOTA
python使用reportlab画图示例(含中文汉字)
2013/12/03 Python
python函数参数*args**kwargs用法实例
2013/12/04 Python
python 中split 和 strip的实例详解
2017/07/12 Python
python中requests使用代理proxies方法介绍
2017/10/25 Python
不管你的Python报什么错,用这个模块就能正常运行
2018/09/14 Python
使用Python 正则匹配两个特定字符之间的字符方法
2018/12/24 Python
对Python正则匹配IP、Url、Mail的方法详解
2018/12/25 Python
Python判断有效的数独算法示例
2019/02/23 Python
python numpy实现文件存取的示例代码
2019/05/26 Python
python实现自动化上线脚本的示例
2019/07/01 Python
Python 实现加密过的PDF文件转WORD格式
2020/02/04 Python
美国护肤咨询及美容产品电商:Askderm
2017/02/24 全球购物
机械工程师求职自我评价
2013/09/23 职场文书
商业计算机应用专业自荐书
2014/06/09 职场文书
低碳日宣传活动总结
2014/07/09 职场文书
优秀共产党员事迹材料
2014/12/18 职场文书
2015年社区居委会工作总结
2015/05/18 职场文书
2015年小学数学教师工作总结
2015/05/20 职场文书