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 相关文章推荐
用javascript自动显示最后更新时间
Mar 15 Javascript
Textbox控件注册回车事件及触发按钮提交事件具体实现
Mar 04 Javascript
利用JS实现浏览器的title闪烁
Jul 08 Javascript
javascript为按钮注册回车事件(设置默认按钮)的方法
May 09 Javascript
JavaScript编程中布尔对象的基本使用
Oct 25 Javascript
详解JavaScript编程中正则表达式的使用
Oct 25 Javascript
jQuery文件上传控件 Uploadify 详解
Jun 20 Javascript
input输入密码变黑点密文的实现方法
Jan 09 Javascript
ajax实现动态下拉框示例
Jan 10 Javascript
JS库中的Particles.js在vue上的运用案例分析
Sep 13 Javascript
vue中使用WX-JSSDK的两种方法(推荐)
Jan 18 Javascript
JS实现的定时器展示简单秒表、页面弹框及跳转操作完整示例
Jan 26 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 visitFile()遍历指定文件夹函数
2010/08/21 PHP
利用中国天气预报接口实现简单天气预报
2014/01/20 PHP
php简单的留言板与回复功能具体实现
2014/02/19 PHP
PHP实现合并discuz用户
2015/08/05 PHP
PHP下SSL加密解密、验证、签名方法(很简单)
2020/06/28 PHP
thinkPHP实现多字段模糊匹配查询的方法
2016/12/01 PHP
php ajax confirm 删除实例详解
2019/03/06 PHP
layui数据表格自定义每页条数limit设置
2019/10/26 PHP
JQuery 操作select标签实现代码
2010/05/14 Javascript
jQuery学习笔记 操作jQuery对象 CSS处理
2012/09/19 Javascript
localResizeIMG先压缩后使用ajax无刷新上传(移动端)
2015/08/11 Javascript
基于jQuery实现网页打印功能
2015/12/01 Javascript
实例讲解javascript注册事件处理函数
2016/01/09 Javascript
基于jQuery实现仿51job城市选择功能实例代码
2016/03/02 Javascript
谈一谈js中的执行环境及作用域
2016/03/30 Javascript
基于JS模仿windows文件按名称排序效果
2016/06/29 Javascript
HTML Table 空白单元格补全的简单实现
2016/10/13 Javascript
用 js 的 selection range 操作选择区域内容和图片
2017/04/18 Javascript
在knockoutjs 上自己实现的flux(实例讲解)
2017/12/18 Javascript
AngularJS集合数据遍历显示的实例
2017/12/27 Javascript
详解使用React进行组件库开发
2018/02/06 Javascript
使用angular-cli webpack创建多个包的方法
2018/10/16 Javascript
浅谈vue项目用到的mock数据接口的两种方式
2019/10/09 Javascript
微信小程序点击顶部导航栏切换样式代码实例
2019/11/12 Javascript
JavaScript定时器使用方法详解
2020/03/26 Javascript
[01:16:28]DOTA2-DPC中国联赛 正赛 iG vs Magma BO3 第二场 2月23日
2021/03/11 DOTA
Python简单实现阿拉伯数字和罗马数字的互相转换功能示例
2018/04/17 Python
pandas 选择某几列的方法
2018/07/03 Python
Python的高阶函数用法实例分析
2019/04/11 Python
pytorch 状态字典:state_dict使用详解
2020/01/17 Python
python 获取当前目录下的文件目录和文件名实例代码详解
2020/03/10 Python
银行会计财务工作个人的自我评价
2013/10/29 职场文书
保密工作整改情况汇报
2014/11/06 职场文书
漂亮妈妈观后感
2015/06/08 职场文书
解决Tkinter中button按钮未按却主动执行command函数的问题
2021/05/23 Python
MySQL系列之五 视图、存储函数、存储过程、触发器
2021/07/02 MySQL