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 相关文章推荐
JavaScript 私有成员分析
Jan 13 Javascript
ExtJs之带图片的下拉列表框插件
Mar 04 Javascript
jQuery使用一个按钮控制图片的伸缩实现思路
Apr 19 Javascript
浅谈javascript 迭代方法
Jan 21 Javascript
简介JavaScript中toUpperCase()方法的使用
Jun 06 Javascript
如何在Angular.JS中接收并下载PDF
Nov 26 Javascript
HTML5canvas 绘制一个圆环形的进度表示实例
Dec 16 Javascript
写一个移动端惯性滑动&回弹Vue导航栏组件 ly-tab
Mar 06 Javascript
vue集成kindeditor富文本的实现示例代码
Jun 07 Javascript
layui表格设计以及数据初始化详解
Oct 26 Javascript
微信小程序实现点击导航标签滚动定位到对应位置
Nov 19 Javascript
如何用JavaScript检测当前浏览器是无头浏览器
Apr 27 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
安健A254立体声随身听的分析与打磨
2021/03/02 无线电
win7系统配置php+Apache+mysql环境的方法
2015/08/21 PHP
PHP 二级子目录(后台目录)设置二级域名
2017/03/02 PHP
JS去除字符串的空格增强版(可以去除中间的空格)
2009/08/26 Javascript
jquery关于图形报表的运用实现代码
2011/01/06 Javascript
javascript数字格式化通用类 accounting.js使用
2012/08/24 Javascript
js动画(animate)简单引擎代码示例
2012/12/04 Javascript
JS 各种网页尺寸判断实例方法
2013/04/18 Javascript
javascript获取所有同类checkbox选项(实例代码)
2013/11/07 Javascript
Jquery操作radio的简单实例
2014/01/06 Javascript
js获取元素外链样式的方法
2015/01/27 Javascript
javascript笛卡尔积算法实现方法
2015/04/08 Javascript
Jquery技巧(必须掌握)
2016/03/16 Javascript
JS实现AES加密并与PHP互通的方法分析
2017/04/19 Javascript
jQuery 防止相同的事件快速重复触发方法
2018/02/08 jQuery
Bootstrap fileinput 上传新文件移除时触发服务器同步删除的配置
2018/10/08 Javascript
JavaScript面试技巧之数组的一些不low操作
2019/03/22 Javascript
Vue+Django项目部署详解
2019/05/30 Javascript
JS中的算法与数据结构之集合(Set)实例详解
2019/08/20 Javascript
JS内置对象和Math对象知识点详解
2020/04/03 Javascript
javascript如何使用函数random来实现课堂随机点名方法详解
2020/07/28 Javascript
python购物车程序简单代码
2018/04/18 Python
windows下python安装pip图文教程
2018/05/25 Python
python查找指定文件夹下所有文件并按修改时间倒序排列的方法
2018/10/21 Python
pandas 空的dataframe 插入列名的示例
2018/10/30 Python
python列表生成器迭代器实例解析
2019/12/19 Python
PyTorch中 tensor.detach() 和 tensor.data 的区别详解
2020/01/06 Python
tensorflow保持每次训练结果一致的简单实现
2020/02/17 Python
python实现扫雷游戏的示例
2020/10/20 Python
利用python进行文件操作
2020/12/04 Python
一文彻底解决HTML5页面中长按保存图片功能
2019/06/10 HTML / CSS
凯伦·米莲女装网上商店:Karen Millen
2017/11/07 全球购物
异常和异常类的概念
2014/09/12 面试题
教师自我鉴定范文
2013/11/10 职场文书
阿里云k8s服务升级时502错误 springboot项目应用
2022/04/09 Servers
基于Python实现nc批量转tif格式
2022/08/14 Python