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 相关文章推荐
List the Codec Files on a Computer
Jun 11 Javascript
麦鸡的TAB切换功能结合了javascript和css
Dec 17 Javascript
Prototype源码浅析 String部分(二)
Jan 16 Javascript
javascript中encodeURI和decodeURI方法使用介绍
May 06 Javascript
JavaScript生成的动态下雨背景效果实现方法
Feb 25 Javascript
浅谈JavaScript数据类型及转换
Feb 28 Javascript
javascript+HTML5 Canvas绘制转盘抽奖
May 16 Javascript
bing Map 在vue项目中的使用详解
Apr 09 Javascript
jQuery.parseJSON()函数详解
Feb 28 jQuery
微信小程序 setData 对 data数据影响问题
Apr 18 Javascript
layui使用label标签的方法
Sep 14 Javascript
JS实现电脑虚拟键盘的操作
Jun 24 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
什么是短波收听SWL
2021/03/01 无线电
PHP的FTP学习(一)
2006/10/09 PHP
不用数据库的多用户文件自由上传投票系统(3)
2006/10/09 PHP
php中json_decode()和json_encode()的使用方法
2012/06/04 PHP
PHP变量赋值、代入给JavaScript中的变量
2015/06/29 PHP
php实现通过cookie换肤的方法
2015/07/13 PHP
ThinkPHP框架表单验证操作方法
2017/07/19 PHP
JQuery调webservice实现邮箱验证(检测是否可用)
2013/05/21 Javascript
javascript屏蔽右键代码
2014/05/15 Javascript
JavaScript中的对象序列化介绍
2014/12/30 Javascript
基于jquery实现导航菜单高亮显示(两种方法)
2015/08/23 Javascript
NodeJS学习笔记之Module的简介
2017/03/24 NodeJs
JavaScript学习笔记之函数记忆
2017/09/06 Javascript
基于打包工具Webpack进行项目开发实例
2018/05/29 Javascript
vue实现同一个页面可以有多个router-view的方法
2018/09/20 Javascript
JS添加或删除HTML dom元素的方法实例分析
2019/03/05 Javascript
vue路由教程之静态路由
2019/09/03 Javascript
[12:29]2018国际邀请赛 开幕秀
2018/08/22 DOTA
[57:29]Alliance vs KG 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/17 DOTA
Python中的闭包总结
2014/09/18 Python
Python列表(list)、字典(dict)、字符串(string)基本操作小结
2014/11/28 Python
详解Python字符串对象的实现
2015/12/24 Python
Linux系统(CentOS)下python2.7.10安装
2018/09/26 Python
Python 虚拟空间的使用代码详解
2019/06/10 Python
Python转换时间的图文方法
2019/07/01 Python
弄懂这56个Python使用技巧(轻松掌握Python高效开发)
2019/09/18 Python
numpy ndarray 取出满足特定条件的某些行实例
2019/12/05 Python
英文商务邀请信
2014/01/22 职场文书
优秀通讯员事迹材料
2014/01/28 职场文书
电大毕业生自我鉴定
2014/04/10 职场文书
2015年超市员工工作总结
2015/05/04 职场文书
普通员工辞职信范文
2015/05/12 职场文书
在校生证明
2015/06/17 职场文书
2015国庆节放假通知范文
2015/07/30 职场文书
2019年手机市场的调研报告2篇
2019/10/10 职场文书
win10如何快速切换窗口 win10切换窗口快捷键分享
2022/07/23 数码科技