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 相关文章推荐
密码强度检测效果实现原理与代码
Jan 04 Javascript
javascript 判断字符串是否包含某字符串及indexOf使用示例
Oct 18 Javascript
jQuery基础语法实例入门
Dec 23 Javascript
用队列模拟jquery的动画算法实例
Jan 20 Javascript
JS+CSS实现美化的下拉列表框效果
Aug 11 Javascript
JavaScript中三种异步上传文件方式
Mar 06 Javascript
jquery实现异步加载图片(懒加载图片一种方式)
Apr 24 jQuery
js canvas实现QQ拨打电话特效
May 10 Javascript
浅析Vue 和微信小程序的区别、比较
Aug 03 Javascript
用Object.prototype.toString.call(obj)检测对象类型原因分析
Oct 11 Javascript
在layui.use 中自定义 function 的正确方法
Sep 16 Javascript
javascript 关于赋值、浅拷贝、深拷贝的个人理解
Nov 01 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
咖啡知识 咖啡养豆要养多久 排气又是什么
2021/03/06 新手入门
php 常用类整理
2009/12/23 PHP
php构造函数的继承方法
2015/02/09 PHP
解决laravel5中auth用户登录其他页面获取不到登录信息的问题
2019/10/08 PHP
JQueryEasyUI datagrid框架的基本使用
2013/04/08 Javascript
鼠标移到图片上变大显示而不是放大镜效果
2014/06/15 Javascript
JavaScript使用setTimeout实现延迟弹出警告框的方法
2015/04/07 Javascript
简化版手机端照片预览组件
2015/04/13 Javascript
JS中生成随机数的用法及相关函数
2016/01/09 Javascript
详解nodejs与javascript中的aes加密
2016/05/22 NodeJs
jQuery获取及设置表单input各种类型值的方法小结
2016/05/24 Javascript
限制文本框只能输入数字||只能是数字和小数点||只能是整数和浮点数
2016/05/27 Javascript
12306 刷票脚本及稳固刷票脚本(防挂)
2017/01/04 Javascript
NodeJS安装图文教程
2018/04/19 NodeJs
NodeJS如何实现同步的方法示例
2018/08/24 NodeJs
vue路由插件之vue-route
2019/06/13 Javascript
[06:06]2018DOTA2亚洲邀请赛主赛事第四日战况回顾 全明星赛欢乐上演
2018/04/07 DOTA
Python结巴中文分词工具使用过程中遇到的问题及解决方法
2017/04/15 Python
pandas 空的dataframe 插入列名的示例
2018/10/30 Python
使用python的pexpect模块,实现远程免密登录的示例
2019/02/14 Python
Python编写一个验证码图片数据标注GUI程序附源码
2019/12/09 Python
简单了解Django ORM常用字段类型及参数配置
2020/01/07 Python
pytorch加载语音类自定义数据集的方法教程
2020/11/10 Python
python全栈开发语法总结
2020/11/22 Python
CSS3 Notes: -webkit-box-reflect实现倒影的实例
2016/12/08 HTML / CSS
html5与css3小应用
2013/04/03 HTML / CSS
国家地理在线商店:Shop National Geographic
2018/06/30 全球购物
上海方立数码笔试题
2013/10/18 面试题
学生个人求职自荐信格式
2013/09/23 职场文书
生物技术研究生自荐信
2013/11/12 职场文书
暑期实践思想汇报
2014/01/06 职场文书
大学生社团活动总结
2014/04/26 职场文书
王兆力在市委党的群众路线教育实践活动总结大会上的讲话稿
2014/10/25 职场文书
2014年绩效考核工作总结
2014/12/11 职场文书
《酸的和甜的》教学反思
2016/02/18 职场文书
numpy数据类型dtype转换实现
2021/04/24 Python