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 相关文章推荐
ie和firefox不兼容的解决方法集合
Apr 28 Javascript
js内置对象 学习笔记
Aug 01 Javascript
jQuery1.6 使用方法一
Nov 23 Javascript
VS2008中使用JavaScript调用WebServices
Dec 18 Javascript
JavaScript数据操作_浅谈原始值和引用值的操作本质
Aug 23 Javascript
javascript 判断页面访问方式电脑或者移动端
Sep 19 Javascript
JS框架之vue.js(深入三:组件1)
Sep 29 Javascript
详解Vue-cli代理解决跨域问题
Sep 27 Javascript
Vue服务器渲染Nuxt学习笔记
Jan 31 Javascript
JavaScript中Array方法你该知道的正确打开方法
Sep 11 Javascript
Vue数据驱动表单渲染,轻松搞定form表单
Jul 19 Javascript
Vue中正确使用Element-UI组件的方法实例
Oct 13 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
1 Tube Radio
2021/03/02 无线电
用libtemplate实现静态网页生成
2006/10/09 PHP
php mysql数据库操作类
2008/06/04 PHP
利用php生成验证码
2017/02/23 PHP
学习YUI.Ext 第七天--关于View&amp;JSONView
2007/03/10 Javascript
让网页根据不同IE版本显示不同的内容
2009/02/08 Javascript
html 锁定页面(js遮罩层弹出div效果)
2009/10/27 Javascript
js实现的仿新浪微博完美的时间组件升级版
2011/12/20 Javascript
jQuery 自定义函数写法分享
2012/03/30 Javascript
jQuery.Validate验证库的使用介绍
2013/04/26 Javascript
浅析AngularJS中的生命周期和延迟处理
2015/06/18 Javascript
Clipboard.js 无需Flash的JavaScript复制粘贴库
2015/10/02 Javascript
JS实现电商放大镜效果
2017/08/24 Javascript
angular5 httpclient的示例实战
2018/03/12 Javascript
详解javascript 正则表达式之分组与前瞻匹配
2018/05/30 Javascript
利用JS响应式修改vue实现页面的input值
2019/09/02 Javascript
react-native 实现购物车滑动删除效果的示例代码
2021/01/15 Javascript
python多进程共享变量
2016/04/06 Python
Python将多个excel文件合并为一个文件
2018/01/03 Python
Python之ReportLab绘制条形码和二维码的实例
2018/01/15 Python
为什么Python中没有&quot;a++&quot;这种写法
2018/11/27 Python
Python按钮的响应事件详解
2019/03/04 Python
python3.6环境安装+pip环境配置教程图文详解
2019/06/20 Python
python程序变成软件的实操方法
2019/06/24 Python
Python 生成器,迭代,yield关键字,send()传参给yield语句操作示例
2019/10/12 Python
CSS3 实现发光边框特效
2020/11/11 HTML / CSS
HTML5事件方法全部汇总
2016/05/12 HTML / CSS
canvas实现漂亮的下雨效果的示例
2018/04/18 HTML / CSS
C++面试题目
2013/06/25 面试题
一百多行代码实现react拖拽hooks
2021/03/23 Javascript
领导检查欢迎词
2014/01/14 职场文书
父亲追悼会答谢词
2014/01/17 职场文书
2014班子“三严三实”对照检查材料思想汇报
2014/09/18 职场文书
餐饮食品安全责任书
2015/01/29 职场文书
电工生产实习心得体会
2016/01/22 职场文书
Golang连接并操作MySQL
2022/04/14 MySQL