javascript hashtable实现代码


Posted in Javascript onOctober 13, 2009
var arr = new Array(); 
arr['item1'] = 'the value of item 1 '; 
arr['item2'] = 'the value of item 2 '; 
alert(arr['item1']); 
alert(arr['item2']);

但上述功能,不符我们的实际要求,另外查询遍历也不方便,我们需要在Array的基础上进行扩展,
下面我们可以用js中的数组来实现类似的hashtable的功能,
function Hashtable(){ 
this.clear = hashtable_clear; 
this.containsKey = hashtable_containsKey; 
this.containsValue = hashtable_containsValue; 
this.get = hashtable_get; 
this.isEmpty = hashtable_isEmpty; 
this.keys = hashtable_keys; 
this.put = hashtable_put; 
this.remove = hashtable_remove; 
this.size = hashtable_size; 
this.toString = hashtable_toString; 
this.values = hashtable_values; 
this.hashtable = new Array(); 
} 
function hashtable_clear(){ 
this.hashtable = new Array(); 
} 
function hashtable_containsKey(key){ 
var exists = false; 
for (var i in this.hashtable) { 
if (i == key && this.hashtable[i] != null) { 
exists = true; 
break; 
} 
} 
return exists; 
} 
function hashtable_containsValue(value){ 
var contains = false; 
if (value != null) { 
for (var i in this.hashtable) { 
if (this.hashtable[i] == value) { 
contains = true; 
break; 
} 
} 
} 
return contains; 
} 
function hashtable_get(key){ 
return this.hashtable[key]; 
} 
function hashtable_isEmpty(){ 
return (this.size == 0) ? true : false; 
} 
function hashtable_keys(){ 
var keys = new Array(); 
for (var i in this.hashtable) { 
if (this.hashtable[i] != null) 
keys.push(i); 
} 
return keys; 
} 
function hashtable_put(key, value){ 
if (key == null || value == null) { 
throw 'NullPointerException {' + key + '},{' + value + '}'; 
}else{ 
this.hashtable[key] = value; 
} 
} 
function hashtable_remove(key){ 
var rtn = this.hashtable[key]; 
//this.hashtable[key] =null; 
this.hashtable.splice(key,1); 
return rtn; 
} 
function hashtable_size(){ 
var size = 0; 
for (var i in this.hashtable) { 
if (this.hashtable[i] != null) 
size ++; 
} 
return size; 
} 
function hashtable_toString(){ 
var result = ''; 
for (var i in this.hashtable) 
{ 
if (this.hashtable[i] != null) 
result += '{' + i + '},{' + this.hashtable[i] + '}\n'; 
} 
return result; 
} 
function hashtable_values(){ 
var values = new Array(); 
for (var i in this.hashtable) { 
if (this.hashtable[i] != null) 
values.push(this.hashtable[i]); 
} 
return values; 
}

Hastable类使用方法:
//实例化一个自定义的哈希表类 
var hashTable = new Hashtable(); 
hashTable.put(0,'abc'); //0为key, 'abc'为value 
hashTable.put(1,'123'); 
hashTable.put(2,'88a'); 
hashTable.put(3,'88a'); 
//遍历hashtable, 相当于c#和java中的foreach 
for (var key in hashTable.keys()){ /* 用keys方法 */ 
alert(hashTable.get(key)); //按key遍历value 
} 
//遍历hashtable, 相当于c#和java中的foreach 
for (var key in hashTable.hashtable)){ /* 用hashtable属性 */ 
alert(hashTable.get(key)); //按key遍历value 
} 
alert(hashTable.containsKey(1)); //返回true 
alert(hashTable.containsKey(4)); //因为不存在key为4的,返回false 
alert(hashTable.containsValue('888')); //返回true 
alert(hashTable.containsValue('mobidogs')); //因为不存在value为'mobidogs'的,返回false 
hashTable.remove(1); //移除key为1的元素 
alert(hashTable.containsKey(1)); //因为key为1的元素已被上行的reomve()方法移除,所以返回false 
//关于hastable的其它方法使用简单,读者可以自己测试 (此略)
Javascript 相关文章推荐
修改发贴的编辑功能
Mar 07 Javascript
javascript判断css3动画结束 css3动画结束的回调函数
Mar 10 Javascript
javascript中返回顶部按钮的实现
May 05 Javascript
jquery控制表单输入框显示默认值的方法
May 22 Javascript
jQuery实现鼠标经过购物车出现下拉框代码(推荐)
Jul 21 Javascript
jquery利用json实现页面之间传值的实例解析
Dec 12 Javascript
微信小程序request请求后台接口php的实例详解
Sep 20 Javascript
js实现弹出框的拖拽效果实例代码详解
Apr 16 Javascript
一篇文章带你搞懂Vue虚拟Dom与diff算法
Aug 25 Javascript
js实现移动端图片滑块验证功能
Sep 29 Javascript
js实现简单的倒计时
Jan 28 Javascript
在js中修改html body的样式
Nov 11 Javascript
JavaScript 核心参考教程 内置对象
Oct 13 #Javascript
jQuery Ajax之load()方法
Oct 12 #Javascript
jQuery Ajax之$.get()方法和$.post()方法
Oct 12 #Javascript
JS 文件本身编码转换 图文教程
Oct 12 #Javascript
jQuery 行级解析读取XML文件(附源码)
Oct 12 #Javascript
jquery select选中的一个小问题
Oct 11 #Javascript
Jquery 表单取值赋值的一些基本操作
Oct 11 #Javascript
You might like
ThinkPHP使用心得分享-ThinkPHP + Ajax 实现2级联动下拉菜单
2014/05/15 PHP
PHP使用JpGraph绘制折线图操作示例【附源码下载】
2019/10/18 PHP
学习YUI.Ext 第四天--对话框Dialog的使用
2007/03/10 Javascript
原创javascript小游戏实现代码
2010/08/19 Javascript
javascript分页代码(当前页码居中)
2012/09/20 Javascript
jquery easyui滚动条部分设置介绍
2013/09/12 Javascript
jquery选择器之内容过滤选择器详解
2014/01/27 Javascript
jQuery中prevUntil()方法用法实例
2015/01/08 Javascript
js针对ip地址、子网掩码、网关的逻辑性判断
2016/01/06 Javascript
layui分页效果实现代码
2017/05/19 Javascript
JS 实现banner图片轮播效果(鼠标事件)
2017/08/04 Javascript
JavaScript求一个数组中重复出现次数最多的元素及其下标位置示例
2018/07/23 Javascript
Vue监听一个数组id是否与另一个数组id相同的方法
2018/09/26 Javascript
使用vue脚手架(vue-cli)搭建一个项目详解
2019/05/09 Javascript
详解Angular Karma测试的持续集成实践
2019/11/15 Javascript
前端 javascript 实现文件下载的示例
2020/11/24 Javascript
Vue使用Ref跨层级获取组件的步骤
2021/01/25 Vue.js
Python标准库之sqlite3使用实例
2014/11/25 Python
python+pygame简单画板实现代码实例
2017/12/13 Python
浅谈flask截获所有访问及before/after_request修饰器
2018/01/18 Python
python得到qq句柄,并显示在前台的方法
2018/10/14 Python
Python 实现域名解析为ip的方法
2019/02/14 Python
pandas 如何分割字符的实现方法
2019/07/29 Python
python数据持久存储 pickle模块的基本使用方法解析
2019/08/30 Python
python安装virtualenv虚拟环境步骤图文详解
2019/09/18 Python
Django-imagekit的使用详解
2020/07/06 Python
python利用os模块编写文件复制功能——copy()函数用法
2020/07/13 Python
html5视频播放_动力节点Java学院整理
2017/07/13 HTML / CSS
精油和天然健康美容产品:Art Naturals
2018/01/27 全球购物
JBL英国官网:JBL UK
2018/07/04 全球购物
巴西化妆品商店:Lojas Rede
2019/07/26 全球购物
Shell脚本如何向终端输出信息
2014/04/25 面试题
结婚邀请函范文
2014/01/14 职场文书
行政主管职责范本
2014/03/07 职场文书
公司总经理岗位职责
2014/03/15 职场文书
经费申请报告范文
2015/05/18 职场文书