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 相关文章推荐
jquery.bgiframe.js在IE9下提示INVALID_CHARACTER_ERR错误
Jan 11 Javascript
js类式继承与原型式继承详解
Apr 07 Javascript
BootStrap 智能表单实战系列(二)BootStrap支持的类型简介
Jun 13 Javascript
AngularJS ng-bind 指令简单实现
Jul 30 Javascript
ES2015 Symbol 一种绝不重复的值
Dec 25 Javascript
JavaScript中Math对象的方法介绍
Jan 05 Javascript
Vue实例简单方法介绍
Jan 20 Javascript
jquery 仿锚点跳转到页面指定位置的实例
Feb 14 Javascript
js自定义Tab选项卡效果
Jun 05 Javascript
react-native-fs实现文件下载、文本存储的示例代码
Sep 22 Javascript
JS+php后台实现文件上传功能详解
Mar 02 Javascript
原生js中运算符及流程控制示例详解
Jan 05 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
Discuz!5的PHP代码高亮显示插件(黑暗中的舞者更新)
2007/01/29 PHP
php cookis创建实现代码
2009/03/16 PHP
PHP采集腾讯微博的实现代码
2012/01/19 PHP
PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库)
2019/11/19 PHP
javascript fullscreen全屏实现代码
2009/04/09 Javascript
Jquery下判断Id是否存在的代码
2011/01/06 Javascript
JavaScript window.document的属性、方法和事件小结
2012/10/24 Javascript
jQuery的显示和隐藏方法与css隐藏的样式对比
2013/10/18 Javascript
node.js中的path.resolve方法使用说明
2014/12/08 Javascript
js中的内部属性与delete操作符介绍
2015/08/10 Javascript
js获取鼠标位置实例详解
2015/12/09 Javascript
javascript 数组的定义和数组的长度
2016/06/07 Javascript
JS生成不重复的随机数组的简单实例
2016/07/10 Javascript
AngularJS 基础ng-class-even指令用法
2016/08/01 Javascript
jQuery.Validate表单验证插件的使用示例详解
2017/01/04 Javascript
JavaScript 事件对内存和性能的影响
2017/01/22 Javascript
JS回调函数基本定义与用法实例分析
2017/05/24 Javascript
jQuery实现可兼容IE6的遮罩功能详解
2017/09/19 jQuery
JS原型prototype和__proto__用法实例分析
2020/03/14 Javascript
深入理解NumPy简明教程---数组2
2016/12/17 Python
详解Python实现多进程异步事件驱动引擎
2017/08/25 Python
Python实现使用request模块下载图片demo示例
2019/05/24 Python
python中对数据进行各种排序的方法
2019/07/02 Python
Pytorch 保存模型生成图片方式
2020/01/10 Python
Python如何实现的二分查找算法
2020/05/27 Python
python代码中怎么换行
2020/06/17 Python
python如何快速生成时间戳
2020/07/21 Python
CSS3实现的闪烁跳跃进度条示例(附源码)
2013/08/19 HTML / CSS
巴西儿童时尚购物网站:Dinda
2019/08/14 全球购物
意大利体育用品和运动服网上商店:Maxi Sport
2019/09/14 全球购物
教师通用专业自荐书范文
2014/02/11 职场文书
2014年惩防体系建设工作总结
2014/12/01 职场文书
家长评语怎么写
2014/12/30 职场文书
幼儿园大班教育随笔
2015/08/14 职场文书
golang 实现菜单树的生成方式
2021/04/28 Golang
利用python Pandas实现批量拆分Excel与合并Excel
2021/05/23 Python