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 相关文章推荐
使用Mootools动态添加Css样式表代码,兼容各浏览器
Dec 12 Javascript
input链接页面、打开新网页等等的具体实现
Dec 30 Javascript
js获取当前地址 JS获取当前URL的示例代码
Feb 26 Javascript
jQuery 鼠标经过(hover)事件的延时处理示例
Apr 14 Javascript
JavaScript中匿名函数用法实例
Mar 23 Javascript
jQuery结合AJAX之在页面滚动时从服务器加载数据
Jun 30 Javascript
通过BootStrap-select插件 js jQuery控制select属性变化
Jan 03 Javascript
JS随机排序数组实现方法分析
Oct 11 Javascript
微信小程序仿美团城市选择
Jun 06 Javascript
在vue中使用express-mock搭建mock服务的方法
Nov 07 Javascript
解决vue自定义全局消息框组件问题
Nov 22 Javascript
vue 递归组件的简单使用示例
Jan 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中flush()、ob_flush()、ob_end_flush()的区别介绍
2013/02/17 PHP
深入解读php中关于抽象(abstract)类和抽象方法的问题分析
2014/01/03 PHP
php cookie名使用点号(句号)会被转换
2014/10/23 PHP
THINKPHP截取中文字符串函数实例代码
2017/03/20 PHP
PHP实现使用DOM将XML数据存入数组的方法示例
2017/09/27 PHP
在子窗口中关闭父窗口的一句代码
2013/10/21 Javascript
cookie的复制与使用记住用户名实现代码
2013/11/04 Javascript
JavaScript function 的 length 属性使用介绍
2014/09/15 Javascript
深入理解javascript构造函数和原型对象
2014/09/23 Javascript
教你如何使用node.js制作代理服务器
2014/11/26 Javascript
angularjs 处理多个异步请求方法汇总
2015/01/06 Javascript
js实现使用鼠标拖拽切换图片的方法
2015/05/04 Javascript
JavaScript函数使用的基本教程
2015/06/04 Javascript
JavaScript设置表单上传时文件个数的方法
2015/08/11 Javascript
分享自己用JS做的扫雷小游戏
2016/02/17 Javascript
浅谈javascript中的call、apply、bind
2016/03/06 Javascript
详解JavaScript节流函数中的Throttle
2016/07/16 Javascript
JS沙箱模式实例分析
2017/09/04 Javascript
微信小程序之页面跳转和参数传递的实现
2017/09/29 Javascript
微信小程序实现单列下拉菜单效果
2019/04/25 Javascript
layer.js之回调销毁对话框的例子
2019/09/11 Javascript
Vue组件模板的几种书写形式(3种)
2020/02/19 Javascript
vue插件--仿微信小程序showModel实现模态提示窗功能
2020/08/19 Javascript
JavaScript实现无限轮播效果
2020/11/19 Javascript
[00:17]天涯墨客一技能展示
2018/08/25 DOTA
Python中的默认参数实例分析
2018/01/29 Python
元组列表字典(莫烦python基础)
2019/04/03 Python
python实现打砖块游戏
2020/02/25 Python
css3实现可滑动跳转的分页插件示例
2014/05/08 HTML / CSS
教师反腐倡廉演讲稿
2014/09/03 职场文书
信用卡工作证明模板
2014/09/14 职场文书
秋季校运会广播稿100字
2014/09/18 职场文书
房屋租赁协议书
2014/10/18 职场文书
追悼会答谢词
2015/01/05 职场文书
Django如何与Ajax交互
2021/04/29 Python
tree shaking对打包体积优化及作用
2022/07/07 Java/Android