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 取值、赋值的基本方法整理
Mar 31 Javascript
兼容各大浏览器的JavaScript阻止事件冒泡代码
Jul 09 Javascript
JavaScript File API实现文件上传预览
Feb 02 Javascript
js判断文件格式及大小的简单实例(必看)
Oct 11 Javascript
jQuery 实现ajax传入参数含有特殊字符的方法总结
Oct 17 Javascript
angular.js中解决跨域问题的三种方式
Jul 12 Javascript
浅谈react.js中实现tab吸顶效果的问题
Sep 06 Javascript
Angular17之Angular自定义指令详解
Jan 21 Javascript
Vue2.0中集成UEditor富文本编辑器的方法
Mar 03 Javascript
Vue 让元素抖动/摆动起来的实现代码
May 31 Javascript
webpack4之SplitChunksPlugin使用指南
Jun 12 Javascript
JS精髓原型链继承及构造函数继承问题纠正
Jun 16 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
Dwz与thinkphp整合下的数据导出到Excel实例
2014/12/04 PHP
ThinkPHP项目分组配置方法分析
2016/03/23 PHP
再论Javascript下字符串连接的性能
2011/03/05 Javascript
把jQuery的类、插件封装成seajs的模块的方法
2014/03/12 Javascript
jQuery的$.proxy()应用示例介绍
2014/04/03 Javascript
JavaScript返回上一页的三种方法及区别介绍
2015/07/04 Javascript
Vue.js每天必学之计算属性computed与$watch
2016/09/05 Javascript
原生js开发的日历插件
2017/02/04 Javascript
Vue非父子组件通信详解
2017/06/12 Javascript
[04:32]DOTA2著名解说配音敌法师 现场专访海涛怒切假腿
2013/12/20 DOTA
[05:06]DOTA2-DPC中国联赛 正赛 VG vs Magma选手采访
2021/03/11 DOTA
Python实现的tab文件操作类分享
2014/11/20 Python
python输出当前目录下index.html文件路径的方法
2015/04/28 Python
Python用Bottle轻量级框架进行Web开发
2016/06/08 Python
Python的collections模块中的OrderedDict有序字典
2016/07/07 Python
最近Python有点火? 给你7个学习它的理由!
2017/06/26 Python
浅谈python可视化包Bokeh
2018/02/07 Python
python如何对实例属性进行类型检查
2018/03/20 Python
使用python验证代理ip是否可用的实现方法
2018/07/25 Python
用于业余项目的8个优秀Python库
2018/09/21 Python
Python 输入一个数字判断成绩分数等级的方法
2018/11/15 Python
djang常用查询SQL语句的使用代码
2019/02/15 Python
把django中admin后台界面的英文修改为中文显示的方法
2019/07/26 Python
安装2019Pycharm最新版本的教程详解
2019/10/22 Python
python json load json 数据后出现乱序的解决方案
2020/02/27 Python
Python编程快速上手——Excel到CSV的转换程序案例分析
2020/02/28 Python
keras得到每层的系数方式
2020/06/15 Python
Python进行统计建模
2020/08/10 Python
python中使用.py配置文件的方法详解
2020/11/23 Python
button在IE6/7下的黑边去除方案
2012/12/24 HTML / CSS
htmlentities() 和 htmlspecialchars()有什么区别
2015/07/01 面试题
应用心理学个人求职信范文
2013/12/11 职场文书
2015年关爱留守儿童工作总结
2015/05/22 职场文书
学生病假条范文
2015/08/17 职场文书
2016年小学生寒假家长评语
2015/10/10 职场文书
python3.9之你应该知道的新特性详解
2021/04/29 Python