javascript hashtable 修正版 下载


Posted in Javascript onDecember 30, 2010

修正hashtableobj.set("length","0") bug
可以设置key忽略大小写
可以clone hashtable对象
可以 使用obj.valueOf("key","defalutvalue") 设置默认值等等
欢迎修正bug

<html> 
<head> 
<script type="text/javascript"> 
// Authors Birdshome, 麻袋@博客园 改版 phito,彭海涛 
Object.prototype.Clone = function() 
{ 
var objClone; 
if ( this.constructor == Object ) objClone = new this.constructor(); 
else objClone = new this.constructor(this.valueOf()); 
for ( var key in this ) 
{ 
if ( objClone[key] != this[key] ) 
{ 
if ( typeof(this[key]) == 'object' ) 
{ 
objClone[key] = this[key].Clone(); 
} 
else 
{ 
objClone[key] = this[key]; 
} 
} 
} 
objClone.toString = this.toString; 
objClone.valueOf = this.valueOf; 
return objClone; 
} 
function Hashtable() { 
this.clear = hashtable_clear; 
this.containsKey = hashtable_containsKey; 
this.containsValue = hashtable_containsValue; 
this.get = hashtable_get; 
this.isEmpty = hashtable_isEmpty; 
this.keys = hashtable_keys; 
this.put = hashtable_put; 
this.remove = hashtable_remove; 
this.size = hashtable_size; 
this.toString = hashtable_toString; 
this.values = hashtable_values; 
this.hashtable = new Object(); 
this.set = hashtable_set; 
this.valueOf = hashtable_valueOf; 
this.clone = hashtable_clone; 
this.ignoreupperlower = true; 
//是否忽略大小写 
} 
/*=======Private methods for internal use only========*/ 
function hashtable_clone(){ 
return this.Clone(); 
} 
function hashtable_put(key, value) { 
if (this.ignoreupperlower && typeof(key) == "string") { 
key = key.toUpperCase(); 
} 
if (key == null || value == null) { 
throw "NullPointerException {" + key + "},{" + value + "}"; 
} else { 
this.hashtable[key] = value; 
} 
} 
function hashtable_set(key, value) { 
if (this.ignoreupperlower && typeof(key) == "string") { 
key = key.toUpperCase(); 
} 
if (this.containsKey(key)) { 
this.remove(key); 
} 
this.put(key, value); 
} 
function hashtable_get(key) { 
if (this.ignoreupperlower && typeof(key) == "string") { 
key = key.toUpperCase(); 
} 
return this.hashtable[key]; 
} 
function hashtable_valueOf(key, defvalue) { 
var ret = this.get(key); 
if (typeof(ret) == "undefined") { 
return defvalue; 
} 
return ret; 
} 
function hashtable_remove(key) { 
if (this.containsKey(key)) { 
delete this.hashtable[key] ; 
} 
} 
function hashtable_isEmpty() { 
return (parseInt(this.size()) == 0) ? true: false; 
} 
function hashtable_size() { 
var size = 0; 
for (var i in this.hashtable) { 
if(typeof(this.hashtable[i])=="function"){ 
continue; 
} 
if (this.hashtable[i] != null) { 
size++; 
} 
} 
return size; 
} 
function hashtable_toString() { 
var result = ""; 
for (var i in this.hashtable) { 
if(typeof(this.hashtable[i])=="function"){ 
continue; 
} 
if (this.hashtable[i] != null) { 
result += "{" + i + ":" + this.hashtable[i] + "}\n"; 
} 
} 
return result; 
} 
function hashtable_clear() { 
this.hashtable = new Object(); 
} 
function hashtable_containsKey(key) { 
if (this.ignoreupperlower && typeof(key) == "string") { 
key = key.toUpperCase(); 
} 
var exists = false; 
for (var i in this.hashtable) { 
if(typeof(this.hashtable[i])=="function"){ 
continue; 
} 
if (i == key && this.hashtable[i] != null) { 
exists = true; 
break; 
} 
} 
return exists; 
} 
function hashtable_containsValue(value) { 
var contains = false; 
if (value != null) { 
for (var i in this.hashtable) { 
if(typeof(this.hashtable[i])=="function"){ 
continue; 
} 
if (this.hashtable[i] == value) { 
contains = true; 
break; 
} 
} 
} 
return contains; 
} 
function hashtable_values() { 
var values = new Object(); 
for (var i in this.hashtable) { 
if(typeof(this.hashtable[i])=="function"){ 
continue; 
} 
if (this.hashtable[i] != null) values.push(this.hashtable[i]); 
} 
return values; 
} 
function hashtable_keys() { 
var keys = new Object(); 
for (var i in this.hashtable) { 
if(typeof(this.hashtable[i])=="function"){ 
continue; 
} 
keys.push(i); 
} 
return keys; 
} 
function test() { 
var ht = new Hashtable(); 
ht.put("3", "Jackson"); 
ht.put("2", "Tom"); 
ht.put("4", 3); 
ht.set("length", 445555); 
ht.set("ddd", "ddd"); 
ht.set("index", "ddd"); 
var et = ht.toString(); 
ht.ignoreupperlower = false; 
//忽略大小写 
ht.clear(); 
ht.put("3", "Jackson"); 
ht.put("2", "Tom"); 
ht.remove("2"); 
ht.put("4", 3); 
ht.set("length", 5); 
//如果用new Array的话该项会设置Array的长度 
ht.set("index", "ddd"); 
ht.set("ddd", "ddd"); 
alert(et + "" + ht.toString() + "" + ht.size()); 
var cloneobj=ht.clone(); 
alert(cloneobj.toString()); 
} 
</script> 
</head> 
<body onload="test()"> 
</body> 
</html>

如果你想使用功能更好的hashtable和hashset请下载: http://xiazai.3water.com/201012/yuanma/jshashtable.rar
Javascript 相关文章推荐
我遇到的参数传递中 双引号单引号嵌套问题
Feb 11 Javascript
基于jquery的一个OutlookBar类,动态创建导航条
Nov 19 Javascript
JS控件的生命周期介绍
Oct 22 Javascript
使用Post提交时须将空格转换成加号的解释
Jan 14 Javascript
js和jquery对dom节点的操作(创建/追加)
Apr 21 Javascript
jQuery 快速结束当前正在执行的动画
Nov 20 Javascript
JS实现可自定义大小,可双击关闭的弹出层效果
Oct 16 Javascript
十大 Node.js 的 Web 框架(快速提升工作效率)
Jun 30 Javascript
Node.js学习之地址解析模块URL的使用详解
Sep 28 Javascript
angularJS的radio实现单项二选一的使用方法
Feb 28 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【圆形情况】
Dec 13 Javascript
vue实现拖拽的简单案例 不超出可视区域
Jul 25 Javascript
javascript中运用闭包和自执行函数解决大量的全局变量问题
Dec 30 #Javascript
javascript中创建对象的三种常用方法
Dec 30 #Javascript
javascript 闭包疑问
Dec 30 #Javascript
javascript数字数组去重复项的实现代码
Dec 30 #Javascript
ExtJs的Date格式字符代码
Dec 30 #Javascript
jcarousellite.js 基于Jquery的图片无缝滚动插件
Dec 30 #Javascript
使用jQuery全局事件ajaxStart为特定请求实现提示效果的代码
Dec 30 #Javascript
You might like
基于mysql的论坛(7)
2006/10/09 PHP
js确定对象类型方法
2012/03/30 Javascript
node.js中的fs.linkSync方法使用说明
2014/12/15 Javascript
javascript中sort()的用法实例分析
2015/01/30 Javascript
js组件SlotMachine实现图片切换效果制作抽奖系统
2016/04/17 Javascript
JavaScript的instanceof运算符学习教程
2016/06/08 Javascript
js实现点击图片自动提交action的简单方法
2016/10/16 Javascript
JS实现的tab切换选项卡效果示例
2017/02/28 Javascript
jQuery+vue.js实现的九宫格拼图游戏完整实例【附源码下载】
2017/09/12 jQuery
swiper插件自定义切换箭头按钮
2017/12/28 Javascript
react 兄弟组件如何调用对方的方法示例
2018/10/23 Javascript
javascript实现的字符串转换成数组操作示例
2019/06/13 Javascript
JavaScript中如何对多维数组(矩阵)去重的实现
2019/12/04 Javascript
跟老齐学Python之用Python计算
2014/09/12 Python
python实现获取序列中最小的几个元素
2014/09/25 Python
python验证码识别的实例详解
2016/09/09 Python
JSON Web Tokens的实现原理
2017/04/02 Python
python获取文件路径、文件名、后缀名的实例
2018/04/23 Python
Python实现的统计文章单词次数功能示例
2019/07/08 Python
Python秒算24点实现及原理详解
2019/07/29 Python
python3 tkinter实现添加图片和文本
2019/11/26 Python
Python3.7黑帽编程之病毒篇(基础篇)
2020/02/04 Python
Python 操作 PostgreSQL 数据库示例【连接、增删改查等】
2020/04/21 Python
使用HTML5 Canvas API绘制弧线的教程
2016/03/22 HTML / CSS
美国最大网上鞋店:Zappos
2016/07/25 全球购物
韩国邮政旗下生鲜食品网上超市:epost
2016/08/27 全球购物
财务经理的岗位职责
2013/12/17 职场文书
中专生自我鉴定范文
2014/02/02 职场文书
护理专科毕业自荐信范文
2014/04/21 职场文书
招股说明书范本
2014/05/06 职场文书
2014年党的群众路线教育实践活动整改措施(个人版)
2014/09/25 职场文书
机关作风整顿个人剖析材料
2014/10/06 职场文书
2014年英语教研组工作总结
2014/12/06 职场文书
贫困证明怎么写
2015/06/16 职场文书
vue完美实现el-table列宽自适应
2021/05/08 Vue.js
Mysql中@和@@符号的详细使用指南
2022/06/05 MySQL