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 相关文章推荐
有关js的变量作用域和this指针的讨论
Dec 16 Javascript
json属性名为什么要双引号(个人猜测)
Jul 31 Javascript
javascript实现限制上传文件大小
Feb 06 Javascript
Windows下用PyCharm和Visual Studio开始Python编程
Oct 26 Javascript
详解JavaScript中的Unescape()和String() 函数
Nov 09 Javascript
JavaScript DOM 学习总结(五)
Nov 24 Javascript
Js实现中国公民身份证号码有效性验证实例代码
May 03 Javascript
微信小程序scroll-view横向滑动嵌套for循环的示例代码
Sep 20 Javascript
puppeteer库入门初探
Jan 09 Javascript
vue实现文字横向无缝走马灯组件效果的实例代码
Apr 09 Javascript
Openlayers测量距离与面积的实现方法
Sep 25 Javascript
Vue实现跑马灯样式文字横向滚动
Nov 23 Vue.js
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
分享一下贝贝成长进度的php代码
2012/09/14 PHP
php合并js请求的例子
2013/11/01 PHP
CSS3画一个阴阳八卦图
2021/03/09 HTML / CSS
7个Javascript地图脚本整理
2009/10/20 Javascript
jQuery 选择器理解
2010/03/16 Javascript
JavaScript学习笔记之JS事件对象
2015/01/22 Javascript
jQuery实现html表格动态添加新行的方法
2015/05/28 Javascript
JavaScript实现函数返回多个值的方法
2015/06/09 Javascript
javascript实现自动填写表单实例简析
2015/12/02 Javascript
JavaScript学习笔记之取数组中最大值和最小值
2016/03/23 Javascript
js中使用使用原型(prototype)定义方法的好处详解
2016/07/04 Javascript
浅谈js在html中的加载执行顺序,多个jquery ready执行顺序
2016/11/26 Javascript
Bootstrap 3浏览器兼容性问题及解决方案
2017/04/11 Javascript
zTree 树插件实现全国五级地区点击后加载的示例
2018/02/05 Javascript
快速了解vue-cli 3.0 新特性
2018/02/28 Javascript
微信小程序使用websocket通讯的demo,含前后端代码,亲测可用
2019/05/22 Javascript
如何配置vue.config.js 处理static文件夹下的静态文件
2020/06/19 Javascript
微信小程序仿抖音短视频切换效果的实例代码
2020/06/24 Javascript
JavaScript逻辑运算符相关总结
2020/09/04 Javascript
vue通过接口直接下载java生成好的Excel表格案例
2020/10/26 Javascript
Python使用matplotlib绘制动画的方法
2015/05/20 Python
django之常用命令详解
2016/06/30 Python
火车票抢票python代码公开揭秘!
2018/03/08 Python
python 随机森林算法及其优化详解
2019/07/11 Python
Python-opencv实现红绿两色识别操作
2020/06/04 Python
html5拖拽应用记录及注意点
2020/05/27 HTML / CSS
Desigual英国官网:在线购买原创服装
2018/03/09 全球购物
Linux中如何用命令创建目录
2016/12/02 面试题
春节慰问信范文
2015/02/15 职场文书
运动会闭幕式主持词
2015/07/01 职场文书
课文《燕子》教学反思
2016/02/17 职场文书
《祁黄羊》教学反思
2016/02/20 职场文书
85句关于理想的名言警句大全
2019/08/22 职场文书
Jsonp劫持学习
2021/04/01 PHP
JS新手入门数组处理的实用方法汇总
2021/04/07 Javascript
Unicode中的CJK(中日韩统一表意文字)字符小结
2021/12/06 HTML / CSS