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 相关文章推荐
ext checkboxgroup 回填数据解决
Aug 21 Javascript
jQuery回车实现登录简单实现
Aug 20 Javascript
JavaScript中this的使用详解
Nov 08 Javascript
JS 新增Cookie 取cookie值 删除cookie 举例详解
Oct 10 Javascript
JS实现选择TextArea内文本的方法
Aug 03 Javascript
js实现的简洁网页滑动tab菜单效果代码
Aug 24 Javascript
悬浮广告方法日常收集整理
Mar 18 Javascript
Angular搜索 过滤 批量删除 添加 表单验证功能集锦(实例代码)
Oct 25 Javascript
JS运动特效之完美运动框架实例分析
Jan 24 Javascript
Node.js之删除文件夹(含递归删除)代码实例
Sep 09 Javascript
Vue.js组件props数据验证实现详解
Oct 19 Javascript
微信小程序APP的事件绑定以及传递参数时的冒泡和捕获
Apr 19 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
phpmyadmin中禁止外网使用的方法
2014/11/04 PHP
Laravel框架路由设置与使用示例
2018/06/12 PHP
thinkphp3.2同时连接两个数据库的简单方法
2019/08/13 PHP
DOM精简教程
2006/10/03 Javascript
用JavaScript将从数据库中读取出来的日期型格式化为想要的类型。
2009/08/15 Javascript
JavaScript 学习笔记 Black.Caffeine 09.11.28
2009/11/30 Javascript
jquery $(document).ready() 与window.onload的区别
2009/12/28 Javascript
jQuery代码优化 遍历篇
2011/11/01 Javascript
基于JavaScript实现继承机制之构造函数方法对象冒充的使用详解
2013/05/07 Javascript
js中各种类型的变量在if条件中是true还是false
2014/07/16 Javascript
JS数组(Array)处理函数整理
2014/12/07 Javascript
JS替换字符串中空格方法
2015/04/17 Javascript
Vuejs第一篇之入门教程详解(单向绑定、双向绑定、列表渲染、响应函数)
2016/09/09 Javascript
深入理解JS中的Function.prototype.bind()方法
2016/10/11 Javascript
快速掌握jQuery插件开发
2017/01/19 Javascript
Vue原理剖析 实现双向绑定MVVM
2017/05/03 Javascript
Vue调试神器vue-devtools安装方法
2017/12/12 Javascript
详解如何在nuxt中添加proxyTable代理
2018/08/10 Javascript
Vue中全局变量的定义和使用
2019/06/05 Javascript
vue登录注册实例详解
2019/09/14 Javascript
JavaScript生成随机验证码代码实例
2019/09/28 Javascript
一张图带我们入门Python基础教程
2017/02/05 Python
浅析python协程相关概念
2018/01/20 Python
Python发送邮件功能示例【使用QQ邮箱】
2018/12/04 Python
python模拟登陆,用session维持回话的实例
2018/12/27 Python
pygame库实现移动底座弹球小游戏
2020/04/14 Python
使用python 将图片复制到系统剪贴中
2019/12/13 Python
关于Python错误重试方法总结
2021/01/03 Python
受外贸欢迎的美国主机:BlueHost
2017/05/16 全球购物
应届毕业生自我鉴定范文
2013/12/27 职场文书
放飞梦想演讲稿800字
2014/08/26 职场文书
公司承诺函范文
2015/01/21 职场文书
2016公司年会通知范文
2015/04/25 职场文书
因公司原因离职的辞职信范文
2015/05/12 职场文书
2015年教师节主持词
2015/07/03 职场文书
vue3中provide && inject的使用
2021/07/01 Vue.js