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 相关文章推荐
图片完美缩放
Sep 07 Javascript
Javascript - HTML的request类
Jan 09 Javascript
Javascript 函数中的参数使用分析
Mar 27 Javascript
jquery事件机制扩展插件 jquery鼠标右键事件
Dec 21 Javascript
两种JS实现屏蔽鼠标右键的方法
Aug 20 Javascript
jquery插件jquery.LightBox.js实现点击放大图片并左右点击切换效果(附demo源码下载)
Feb 25 Javascript
jquery分页插件jquery.pagination.js使用方法解析
Apr 01 Javascript
JS控制页面跳转时未请求要跳转的地址怎么回事
Oct 14 Javascript
微信小程序仿美团城市选择
Jun 06 Javascript
详解vue 自定义marquee无缝滚动组件
Apr 09 Javascript
深入探索VueJS Scoped CSS 实现原理
Sep 23 Javascript
js实现文字头像的生成代码
Mar 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
apache php模块整合操作指南
2012/11/16 PHP
PHP面向对象程序设计之命名空间与自动加载类详解
2016/12/02 PHP
PDO::prepare讲解
2019/01/29 PHP
window.open()弹出居中的窗口
2007/02/01 Javascript
firefox下frameset取不到值的解决方法
2010/09/06 Javascript
返回对象在当前级别中是第几个元素的实现代码
2011/01/20 Javascript
JS打印gridview实现原理及代码
2013/02/05 Javascript
js自动下载文件到本地的实现代码
2013/04/28 Javascript
JavaScript仿静态分页实现方法
2015/08/04 Javascript
js图片轮播效果实现代码
2020/04/18 Javascript
深入理解js函数的作用域与this指向
2016/05/28 Javascript
jQuery实现邮箱下拉列表自动补全功能
2016/09/08 Javascript
jquery中$.fn和图片滚动效果实现的必备知识总结
2017/04/21 jQuery
bootstrap模态框示例代码分享
2017/05/17 Javascript
深入理解requireJS-实现一个简单的模块加载器
2018/01/15 Javascript
Angular @HostBinding()和@HostListener()用法
2018/03/05 Javascript
使用vue.js在页面内组件监听scroll事件的方法
2018/09/11 Javascript
在vue中v-bind使用三目运算符绑定class的实例
2018/09/29 Javascript
jQuery.parseJSON()函数详解
2019/02/28 jQuery
layui 实现二级弹窗弹出之后 关闭一级弹窗的方法
2019/09/18 Javascript
vscode调试node.js的实现方法
2020/03/22 Javascript
JS求解两数之和算法详解
2020/04/28 Javascript
[00:37]DOTA2上海特级锦标赛 Secert 战队宣传片
2016/03/03 DOTA
Python操作SQLite简明教程
2014/07/10 Python
python实现文件路径和url相互转换的方法
2015/07/06 Python
深入解析Python的Tornado框架中内置的模板引擎
2016/07/11 Python
Python实现自定义顺序、排列写入数据到Excel的方法
2018/04/23 Python
flask框架jinja2模板与模板继承实例分析
2019/08/01 Python
Django model class Meta原理解析
2020/11/14 Python
全球航班旅行搜索网站:Cheapflights
2017/05/19 全球购物
软件测试英文面试题
2012/10/14 面试题
机械工程系毕业生求职信
2013/09/27 职场文书
小学中秋节活动方案
2014/02/06 职场文书
《乡下孩子》教学反思
2014/04/17 职场文书
2016年国培心得体会及反思
2016/01/13 职场文书
js基于div丝滑实现贝塞尔曲线
2022/09/23 Javascript