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 相关文章推荐
IE6,IE7下js动态加载图片不显示错误
Jul 17 Javascript
js FLASH幻灯片字符串中有连接符&的处理方法
Mar 01 Javascript
CSS+jQuery实现的一个放大缩小动画效果
Sep 24 Javascript
教你如何自定义百度分享插件以及bshare分享插件的分享按钮
Jun 20 Javascript
必备的JS调试技巧汇总
Jul 20 Javascript
JSON与XML的区别对比及案例应用
Nov 11 Javascript
jsp 自动编译机制详细介绍
Dec 01 Javascript
vue2.0 中#$emit,$on的使用详解
Jun 07 Javascript
jquery实现用户登陆界面(示例讲解)
Sep 06 jQuery
微信小程序中转义字符的处理方法
Mar 28 Javascript
Node.js+Vue脚手架环境搭建的方法步骤
Mar 08 Javascript
html5中sharedWorker实现多页面通信的示例代码
May 07 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
一个oracle+PHP的查询的例子
2006/10/09 PHP
浅析php面向对象public private protected 访问修饰符
2013/06/30 PHP
php绘制一个矩形的方法
2015/01/24 PHP
PHP生成树的方法
2015/07/28 PHP
PHP中功能强大却很少使用的函数实例小结
2016/11/10 PHP
利用php生成验证码
2017/02/23 PHP
JavaScript中void(0)的具体含义解释
2007/02/27 Javascript
pjblog修改技巧汇总
2007/03/12 Javascript
JavaScript DOM 学习第五章 表单简介
2010/02/19 Javascript
Javascript中的变量使用说明
2010/05/18 Javascript
js实现addClass,removeClass,hasClass的函数代码
2011/07/13 Javascript
javascript高级学习笔记整理
2011/08/14 Javascript
如何用JavaScript动态呼叫函数(两种方式)
2013/05/03 Javascript
document节点对象的获取方式示例介绍
2013/12/24 Javascript
js判断手机和pc端选择不同执行事件的方法
2015/01/30 Javascript
jQuery制作可自定义大小的拼图游戏
2015/03/30 Javascript
javascript实现checkbox全选的代码
2015/04/30 Javascript
json传值以及ajax接收详解
2016/05/24 Javascript
AngularJS入门教程之表格实例详解
2016/07/27 Javascript
jQuery动态产生select option下拉列表
2017/03/15 Javascript
JS中SetTimeout和SetInterval使用初探
2017/03/23 Javascript
javascript 中关于array的常用方法详解
2017/05/05 Javascript
仿京东快报向上滚动的实例
2017/12/13 Javascript
layui 给数据表格加序号的方法
2018/08/20 Javascript
解决layer 关闭当前弹窗 关闭遮罩层 input值获取不到的问题
2019/09/25 Javascript
[01:05:56]2018DOTA2亚洲邀请赛3月29日 小组赛A组 Newbee VS VG
2018/03/30 DOTA
python+selenium打印当前页面的titl和url方法
2018/06/22 Python
Python动态声明变量赋值代码实例
2019/12/30 Python
解决python3插入mysql时内容带有引号的问题
2020/03/02 Python
python dict乱码如何解决
2020/06/07 Python
Python3+Django get/post请求实现教程详解
2021/02/16 Python
环法自行车赛官方商店:Le Tour de France
2017/08/27 全球购物
门卫人员岗位职责
2013/12/24 职场文书
学校光盘行动倡议书
2015/04/28 职场文书
初中政治教师教学反思
2016/02/23 职场文书
Python作用域和名称空间的详细介绍
2022/04/13 Python