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中使用Object.prototype.toString判断是否为数组
Apr 01 Javascript
jquery实现select选择框内容左右移动代码分享
Nov 21 Javascript
下雪了 javascript实现雪花飞舞
Aug 02 Javascript
限制复选框最多选择项的实现代码
May 30 Javascript
JS给Array添加是否包含字符串的简单方法
Oct 29 Javascript
在Vue中使用echarts的实例代码(3种图)
Jul 10 Javascript
利用javascript如何随机生成一定位数的密码
Sep 22 Javascript
js实现登录注册框手机号和验证码校验(前端部分)
Sep 28 Javascript
微信小程序之选项卡的实现方法
Sep 29 Javascript
Angular @HostBinding()和@HostListener()用法
Mar 05 Javascript
浅谈如何通过node.js对数据进行MD5加密
May 16 Javascript
el-table-column 内容不自动换行的解决方法
Aug 14 Vue.js
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 服务器配置(使用Apache及IIS两种方法)
2009/06/01 PHP
php中用date函数获取当前时间有误的解决办法
2013/08/02 PHP
ThinkPHP3.1新特性之G方法的使用
2014/06/19 PHP
php中让人头疼的浮点数运算分析
2016/10/10 PHP
Zend Framework基于Command命令行建立ZF项目的方法
2017/02/18 PHP
PHP观察者模式示例【Laravel框架中有用到】
2018/06/15 PHP
PHP大文件分块上传功能实例详解
2019/07/22 PHP
PHP MVC框架中类的自动加载机制实例分析
2019/09/18 PHP
js 页面执行时间计算代码
2009/03/04 Javascript
JavaScript中常见陷阱小结
2010/04/27 Javascript
XMLHTTP 乱码的解决方法(UTF8,GB2312 编码 解码)
2011/01/12 Javascript
JavaScript新窗口与子窗口传值详解
2014/02/11 Javascript
JS实现的打字机效果完整实例
2016/06/20 Javascript
浅谈js构造函数的方法与原型prototype
2016/07/04 Javascript
jQuery实现底部浮动窗口效果
2016/09/07 Javascript
js给table赋值的实例代码
2016/10/13 Javascript
jQuery简单绑定单个事件的方法示例
2017/06/10 jQuery
Javascript防止图片拉伸的自适应处理方法
2017/12/26 Javascript
Vue.js实现数据响应的方法
2018/08/13 Javascript
JS 实现微信扫一扫功能
2018/09/14 Javascript
vue学习笔记之Vue中css动画原理简单示例
2020/02/29 Javascript
js和jquery判断数据类型的4种方法总结
2020/08/28 jQuery
原生js实现无缝轮播图效果
2021/01/28 Javascript
Python中List.count()方法的使用教程
2015/05/20 Python
python在控制台输出进度条的方法
2015/06/20 Python
opencv实现图片模糊和锐化操作
2018/11/19 Python
Python中fnmatch模块的使用详情
2018/11/30 Python
浅谈Python的条件判断语句if/else语句
2019/03/21 Python
selenium+python配置chrome浏览器的选项的实现
2020/03/18 Python
pyinstaller将含有多个py文件的python程序做成exe
2020/04/29 Python
巴基斯坦电子产品购物网站:Home Shopping
2017/09/14 全球购物
英国家庭和商业健身器材购物网站:Fitness Options
2018/07/05 全球购物
工作时间擅自离岗检讨书
2014/10/24 职场文书
临床医学生职业规划书范文
2014/10/25 职场文书
应聘教师自荐信
2015/03/26 职场文书
Tomcat 与 maven 的安装与使用教程
2022/06/16 Servers