javascript 哈希表(hashtable)的简单实现


Posted in Javascript onJanuary 20, 2010

首先简单的介绍关于属性的一些方法:
属性的枚举:
for/in循环是遍历对象属性的方法。如

var obj = { 
name : 'obj1', 
age : 20, 
height : '176cm' 
} 
var str = ''; 
for(var name in obj) 
{ 
str += name + ':' + obj[name] + '\n'; 
} 
alert(str);

输出为:name:obj1

age:20

height:176cm
检查属性是否存在:
in运算符可以用来测试一个属性是否存在。

this.containsKey = function ( key ) 
{ 
return (key in entry); 
}

删除属性
使用delete运算符来删除一个对象的属性。使用delete删除的属性,for/in将不会枚举该属性,并且in运算符也不会检测到该属性。
delete entry[key];
delete obj.name;
下面是哈希表(hashtable)的js的实现方法:
function HashTable() 
{ 
var size = 0; 
var entry = new Object(); 
this.add = function (key , value) 
{ 
if(!this.containsKey(key)) 
{ 
size ++ ; 
} 
entry[key] = value; 
} 
this.getValue = function (key) 
{ 
return this.containsKey(key) ? entry[key] : null; 
} 
this.remove = function ( key ) 
{ 
if( this.containsKey(key) && ( delete entry[key] ) ) 
{ 
size --; 
} 
} 
this.containsKey = function ( key ) 
{ 
return (key in entry); 
} 
this.containsValue = function ( value ) 
{ 
for(var prop in entry) 
{ 
if(entry[prop] == value) 
{ 
return true; 
} 
} 
return false; 
} 
this.getValues = function () 
{ 
var values = new Array(); 
for(var prop in entry) 
{ 
values.push(entry[prop]); 
} 
return values; 
} 
this.getKeys = function () 
{ 
var keys = new Array(); 
for(var prop in entry) 
{ 
keys.push(prop); 
} 
return keys; 
} 
this.getSize = function () 
{ 
return size; 
} 
this.clear = function () 
{ 
size = 0; 
entry = new Object(); 
} 
}

测试:
代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<title>HashTable</title> 
<script type="text/javascript" src="/js/jquery.js"></script> 
<script type="text/javascript" src="/js/HashTable.js"></script> 
<script type="text/javascript"> 
function MyObject(name) 
{ 
this.name = name; 
this.toString = function(){ 
return this.name; 
} 
} 
$(function(){ 
var map = new HashTable(); 
map.add("A","1"); 
map.add("B","2"); 
map.add("A","5"); 
map.add("C","3"); 
map.add("A","4"); 
var arrayKey = new Array("1","2","3","4"); 
var arrayValue = new Array("A","B","C","D"); 
map.add(arrayKey,arrayValue); 
var value = map.getValue(arrayKey); 
var object1 = new MyObject("小4"); 
var object2 = new MyObject("小5"); 
map.add(object1,"小4"); 
map.add(object2,"小5"); 
$('#console').html(map.getKeys().join('|') + '<br>'); 
}) 
</script> 
</head> 
<body> 
<div id="console"></div> 
</body> 
</html>

javascript hashtable实现代码
https://3water.com/article/20372.htm
Javascript 相关文章推荐
JQuery select控件的相关操作实现代码
Sep 14 Javascript
jQuery实现的多级下拉菜单效果代码
Aug 24 Javascript
微信企业号开发之微信考勤Cookies的使用
Sep 11 Javascript
JS日期格式化之javascript Date format
Oct 01 Javascript
Node.js下自定义错误类型详解
Oct 17 Javascript
vue.js中mint-ui框架的使用方法
May 12 Javascript
AngularJs ng-change事件/指令的用法小结
Nov 01 Javascript
vue购物车插件编写代码
Nov 27 Javascript
AngularJS与后端php的数据交互方法
Aug 13 Javascript
详解如何探测小程序返回到webview页面
May 14 Javascript
js实现无限瀑布流实例方法
Sep 16 Javascript
npm qs模块使用详解
Feb 07 Javascript
JS 对象介绍
Jan 20 #Javascript
JavaScript 学习笔记(十一)
Jan 19 #Javascript
9个JavaScript评级/投票插件
Jan 18 #Javascript
jQuery Flash/MP3/Video多媒体插件
Jan 18 #Javascript
使用IE6看老赵的博客 jQuery初探
Jan 17 #Javascript
jQuery+CSS 实现的超Sexy下拉菜单
Jan 17 #Javascript
JS与框架页的操作代码
Jan 17 #Javascript
You might like
php array的学习笔记
2012/05/16 PHP
php在window iis的莫名问题的测试方法
2013/05/14 PHP
PHP实现多进程并行操作的详解(可做守护进程)
2013/06/18 PHP
PHP中把stdClass Object转array的几个方法
2014/05/08 PHP
php实现mysql数据库分表分段备份
2015/06/18 PHP
thinkPHP框架实现多表查询的方法
2018/06/14 PHP
yii框架结合charjs实现统计30天数据的方法
2020/04/04 PHP
js 自制滚动条的小例子
2013/03/16 Javascript
Jquery同辈元素选中/未选中效果的实例代码
2013/08/01 Javascript
新增加的内容是如何将div的scrollbar自动移动最下面
2014/01/02 Javascript
JQuery教学之性能优化
2014/05/14 Javascript
jquery实现预览提交的表单代码分享
2014/05/21 Javascript
在JavaScript应用中使用RequireJS来实现延迟加载
2015/07/01 Javascript
jQuery实现调整表格单列顺序完整实例
2016/06/20 Javascript
Angular和百度地图的结合实例代码
2016/10/19 Javascript
深入理解Angularjs中的$resource服务
2016/12/31 Javascript
Vue.js实现多条件筛选、搜索、排序及分页的表格功能
2020/11/24 Javascript
百度地图去掉marker覆盖物或者去掉maker的label文字方法
2018/01/26 Javascript
详解Node.js读写中文内容文件操作
2018/10/10 Javascript
JavaScript设计模式之装饰者模式实例详解
2019/01/17 Javascript
elementUI table表格动态合并的示例代码
2019/05/15 Javascript
layer设置maxWidth及maxHeight解决方案
2019/07/26 Javascript
处理JavaScript值为undefined的7个小技巧
2020/07/28 Javascript
[48:00]EG vs LGD 2018国际邀请赛淘汰赛BO3 第二场 8.26
2018/08/29 DOTA
python实现电子词典
2020/04/23 Python
Python中collections模块的基本使用教程
2018/12/07 Python
python原类、类的创建过程与方法详解
2019/07/19 Python
Python3 列表,数组,矩阵的相互转换的方法示例
2019/08/05 Python
使用apiDoc实现python接口文档编写
2019/11/19 Python
python3中rank函数的用法
2019/11/27 Python
快时尚眼镜品牌,全国连锁眼镜店:LOHO眼镜生活
2018/10/08 全球购物
《巨人的花园》教学反思
2014/02/12 职场文书
七年级作文之我的梦想
2019/10/16 职场文书
读《解忧杂货店》有感:请相信一切都是最好的安排
2019/11/07 职场文书
如何搭建 MySQL 高可用高性能集群
2021/06/21 MySQL
使用CSS自定义属性实现骨架屏效果
2022/06/21 HTML / CSS