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 相关文章推荐
Firefox outerHTML实现代码
Jun 04 Javascript
Whatever:hover 无需javascript让IE支持丰富伪类
Jun 29 Javascript
JS正则验证邮箱的格式详细介绍
Nov 19 Javascript
jQuery focus和blur事件的应用详解
Jan 26 Javascript
JavaScript 数组中最大最小值
Jun 05 Javascript
JS实现搜索框文字可删除功能
Dec 28 Javascript
利用JS制作万年历的方法
Aug 16 Javascript
详解JS模块导入导出
Dec 20 Javascript
VSCode launch.json配置详细教程
Jun 18 Javascript
Vue性能优化的方法
Jul 30 Javascript
vue 使用localstorage实现面包屑的操作
Nov 16 Javascript
详解如何使用Node.js实现热重载页面
May 06 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
通达OA公共代码 php常用检测函数
2011/12/14 PHP
phpMyAdmin安装并配置允许空密码登录
2015/07/04 PHP
PHP中散列密码的安全性分析
2019/07/26 PHP
JavaScript 的方法重载效果
2009/08/07 Javascript
jQuery hover 延时器实现代码
2011/03/12 Javascript
深入分析JQuery和JavaScript的异同
2014/10/23 Javascript
JavaScript中的null和undefined区别介绍
2015/01/01 Javascript
jQuery显示和隐藏 常用的状态判断方法
2015/01/29 Javascript
SWFUpload多文件上传及文件个数限制的方法
2016/05/31 Javascript
EasyUI 中combotree 默认不能选择父节点的实现方法
2016/11/07 Javascript
ajax实现加载页面、删除、查看详细信息 bootstrap美化页面!
2017/03/14 Javascript
JavaScript 高性能数组去重的方法
2018/09/20 Javascript
详解Vue实战指南之依赖注入(provide/inject)
2018/11/13 Javascript
微信小程序网络层封装的实现(promise, 登录锁)
2019/05/08 Javascript
jQuery实现的解析本地 XML 文档操作示例
2020/04/30 jQuery
Vue+penlayers实现多边形绘制及展示
2020/12/24 Vue.js
[03:55]TI9战队采访——TNC Predator
2019/08/22 DOTA
在Python的Flask框架下使用sqlalchemy库的简单教程
2015/04/09 Python
Python生成随机密码的方法
2017/06/16 Python
查看django版本的方法分享
2018/05/14 Python
python 读取txt,json和hdf5文件的实例
2018/06/05 Python
python使用rpc框架gRPC的方法
2018/08/24 Python
Python3.6.x中内置函数总结及讲解
2019/02/22 Python
python 设置输出图像的像素大小方法
2019/07/04 Python
pip 安装库比较慢的解决方法(国内镜像)
2019/10/06 Python
python 实现弹球游戏的示例代码
2020/11/17 Python
CSS3属性background-size使用指南
2014/12/09 HTML / CSS
英国领先的奢侈品零售商之一:CRUISE
2016/12/02 全球购物
饭店工作计划书
2014/01/10 职场文书
计算机专业优秀大学生自我总结
2014/01/21 职场文书
军训自我鉴定100字
2014/02/13 职场文书
毕业生如何写自我鉴定
2014/03/15 职场文书
无房产证房屋转让协议书合同样本
2014/10/18 职场文书
2015年国庆节新闻稿
2015/07/18 职场文书
求职信:会计求职的写作技巧
2019/04/24 职场文书
mysql知识点整理
2021/04/05 MySQL