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生成asp.net服务器控件的代码
Feb 04 Javascript
JavaScript使用indexOf获得子字符串在字符串中位置的方法
Apr 06 Javascript
jQuery实现自定义右键菜单的树状菜单效果
Sep 02 Javascript
Javascript模仿淘宝信用评价实例(附源码)
Nov 26 Javascript
详解JavaScript 中的 replace 方法
Jan 01 Javascript
JavaScript 弹出子窗体并返回结果到父窗体的实现代码
May 28 Javascript
Bootstrap下拉菜单样式
Feb 07 Javascript
超全面的javascript中变量命名规则
Feb 09 Javascript
JS检测数组类型的方法小结
Mar 14 Javascript
详解Vue.js iview实现树形权限表(可扩展表)
Sep 30 Javascript
使用Object.defineProperty如何巧妙找到修改某个变量的准确代码位置
Nov 02 Javascript
详解vuex commit保存数据技巧
Dec 25 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中创建并处理图象
2006/10/09 PHP
如何让搜索引擎抓取AJAX内容解决方案
2014/08/25 PHP
总结对比php中的多种序列化
2016/08/28 PHP
thinkPHP自动验证机制详解
2016/12/05 PHP
JavaScript 封装Ajax传递的数据代码
2009/06/05 Javascript
比较搞笑的js陷阱题
2010/02/07 Javascript
jQuery中add实现同时选择两个id对象
2010/10/22 Javascript
jQuery实现DIV层收缩展开的方法
2015/02/27 Javascript
JavaScript严格模式详解
2017/01/16 Javascript
记录一次开发微信网页分享的步骤
2019/05/07 Javascript
基于js实现的图片拖拽排序源码实例
2020/11/04 Javascript
手动实现vue2.0的双向数据绑定原理详解
2021/02/06 Vue.js
详解js创建对象的几种方式和对象方法
2021/03/01 Javascript
Python2随机数列生成器简单实例
2017/09/04 Python
python自动化生成IOS的图标
2018/11/13 Python
python傅里叶变换FFT绘制频谱图
2019/07/19 Python
利用Pandas和Numpy按时间戳将数据以Groupby方式分组
2019/07/22 Python
Python 中pandas索引切片读取数据缺失数据处理问题
2019/10/09 Python
Dockers美国官方网站:卡其裤、男士服装、鞋及配件
2016/11/22 全球购物
任意存:BOXFUL
2018/05/21 全球购物
毕业生求职的求职信
2013/12/05 职场文书
成人继续教育实施方案
2014/03/01 职场文书
会计电算化毕业生自荐信
2014/03/03 职场文书
美术教师岗位职责
2014/03/18 职场文书
党员自我对照检查材料
2014/08/19 职场文书
放飞理想演讲稿
2014/09/09 职场文书
1000字打架检讨书
2014/11/03 职场文书
2015年教学工作总结
2015/04/02 职场文书
2015年档案管理工作总结
2015/04/08 职场文书
交通肇事罪辩护词
2015/05/21 职场文书
教师节表彰会主持词
2015/07/06 职场文书
深度学习小工程练习之垃圾分类详解
2021/04/14 Python
直播实况, OMG破敌三路五十分钟大战神技局摩托车
2022/04/01 DOTA
Spring Data JPA框架Repository自定义实现
2022/04/28 Java/Android
解决vue自定义组件@click点击失效问题
2022/04/30 Vue.js
Python数组变形的几种实现方法
2022/05/30 Python