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 相关文章推荐
基于jsTree的无限级树JSON数据的转换代码
Jul 27 Javascript
JavaScript内核之基本概念
Oct 21 Javascript
javascript检测对象中是否存在某个属性判断方法小结
May 19 Javascript
js定时器的使用(实例讲解)
Jan 06 Javascript
JQuery选择器绑定事件及修改内容的方法
Jan 23 Javascript
JavaScript常用的弹出广告及背投广告实现方法
Feb 06 Javascript
asp知识整理笔记3(问答模式)
Sep 27 Javascript
一篇文章搞定JavaScript类型转换(面试常见)
Jan 21 Javascript
AngularJS学习第二篇 AngularJS依赖注入
Feb 13 Javascript
JS+canvas绘制的动态机械表动画效果
Sep 12 Javascript
JavaScript实现放大镜效果代码示例
Apr 29 Javascript
nestjs返回给前端数据格式的封装实现
Feb 22 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
《超神学院》霸气归来, 天使彦上演维多利亚的秘密
2020/03/02 国漫
mysql 字段类型说明
2007/04/27 PHP
win7+apache+php+mysql环境配置操作详解
2013/06/10 PHP
如何取得中文输入的真实长度?
2006/06/24 Javascript
ASP SQL防注入的方法
2008/12/25 Javascript
JS解决ie6下png透明的方法实例
2013/08/02 Javascript
vue.js中$watch的用法示例
2016/10/04 Javascript
微信小程序五星评分效果实现代码
2017/04/06 Javascript
JavaScript实现自动跳转文本功能
2017/05/25 Javascript
element-ui 表格实现单元格可编辑的示例
2018/02/26 Javascript
webpack分离css单独打包的方法
2018/06/12 Javascript
vue.js实现的经典计算器/科学计算器功能示例
2018/07/11 Javascript
JS使用JSON.parse(),JSON.stringify()实现对对象的深拷贝功能分析
2019/03/06 Javascript
解决微信浏览器缓存站点入口文件(IIS部署Vue项目)
2019/06/17 Javascript
[01:32]TI奖金增速竟因它再创新高!DOTA2勇士令状不朽珍藏Ⅰ饰品欣赏
2018/05/18 DOTA
两个使用Python脚本操作文件的小示例分享
2015/08/27 Python
Python实现SSH远程登陆,并执行命令的方法(分享)
2017/05/08 Python
Python实现的文本对比报告生成工具示例
2018/05/22 Python
利用pandas进行大文件计数处理的方法
2018/07/25 Python
Python中的self用法详解
2019/08/06 Python
django项目简单调取百度翻译接口的方法
2019/08/06 Python
python 列表推导式使用详解
2019/08/29 Python
python爬取本站电子书信息并入库的实现代码
2020/01/20 Python
详解python 破解网站反爬虫的两种简单方法
2020/02/09 Python
IE下实现类似CSS3 text-shadow文字阴影的几种方法
2011/05/11 HTML / CSS
Html5监听手机摇一摇事件的实现
2019/11/07 HTML / CSS
大专应届生个人的自我评价
2013/11/21 职场文书
2013年员工自我评价范文
2013/12/27 职场文书
六十岁生日答谢词
2014/01/10 职场文书
一年级学生期末评语
2014/04/21 职场文书
动漫设计与制作专业推荐信
2014/07/07 职场文书
竞聘演讲稿开场白
2014/08/25 职场文书
法定代表人证明书
2014/11/28 职场文书
产品质量保证书范本
2015/02/27 职场文书
毕业论文答辩开场白和答辩技巧
2015/05/27 职场文书
CSS font-variation 可变字体的魅力(实例详解)
2022/03/03 HTML / CSS