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打印网页部分内容的脚本
Nov 17 Javascript
Jquery从头学起第四讲 jquery入门教程
Aug 01 Javascript
一款由jquery实现的整屏切换特效
Sep 15 Javascript
jQuery插件zoom实现图片全屏放大弹出层特效
Apr 15 Javascript
深入分析Javascript跨域问题
Apr 17 Javascript
JavaScript中数据结构与算法(四):串(BF)
Jun 19 Javascript
jQuery控制div实现随滚动条滚动效果
Jun 07 Javascript
JavaScript使用delete删除数组元素用法示例【数组长度不变】
Jan 17 Javascript
javascript html5轻松实现拖动功能
Mar 01 Javascript
关于vuejs中v-if和v-show的区别及v-show不起作用问题
Mar 26 Javascript
详细分析React 表单与事件
Jul 08 Javascript
vue导入.md文件的步骤(markdown转HTML)
Dec 31 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在线生成ico文件的代码
2007/10/09 PHP
由php if 想到的些问题
2008/03/22 PHP
PHP 采集程序原理分析篇
2010/03/05 PHP
php写的AES加密解密类分享
2014/06/20 PHP
thinkphp循环结构用法实例
2014/11/24 PHP
PHP中for循环与foreach的区别
2017/03/06 PHP
ThinkPHP5框架缓存查询操作分析
2018/05/30 PHP
jQuery 学习第六课 实现一个Ajax的TreeView
2010/05/17 Javascript
firefox下jQuery UI Autocomplete 1.8.*中文输入修正方法
2012/09/19 Javascript
javascript中拼接HTML字符串的最快、最好的方法
2014/06/07 Javascript
jQuery中get和post方法传值测试及注意事项
2014/08/08 Javascript
jQuery Masonry瀑布流插件使用详解
2014/11/17 Javascript
vue.js源代码core scedule.js学习笔记
2017/07/03 Javascript
利用Three.js如何实现阴影效果实例代码
2017/09/26 Javascript
详解如何使用webpack打包JS
2018/06/21 Javascript
Nuxt.js之自动路由原理的实现方法
2018/11/21 Javascript
生产制造追溯系统之在线打印功能
2019/06/03 Javascript
Vue实现背景更换颜色操作
2020/07/17 Javascript
Python中使用HTMLParser解析html实例
2015/02/08 Python
编写多线程Python服务器 最适合基础
2018/09/14 Python
关于Python形参打包与解包小技巧分享
2019/08/24 Python
python扫描线填充算法详解
2020/02/19 Python
Python日志打印里logging.getLogger源码分析详解
2021/01/17 Python
css3的transform造成z-index无效解决方案
2014/12/04 HTML / CSS
美丽的现代设计家具:2Modern
2018/07/26 全球购物
高三毕业生自我鉴定
2013/12/20 职场文书
电子商务个人职业生涯规划范文
2014/02/12 职场文书
物理课外活动总结
2014/08/27 职场文书
在教室放鞭炮的检讨书
2014/09/28 职场文书
2015年纪检监察工作总结
2015/04/08 职场文书
学雷锋献爱心倡议书
2015/04/27 职场文书
歌舞青春观后感
2015/06/10 职场文书
django 认证类配置实现
2021/11/11 Python
python脚本框架webpy模板控制结构
2021/11/20 Python
英镑符号 £
2022/02/17 杂记
开发者首先否认《遗弃》被取消的传言
2022/04/11 其他游戏