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 相关文章推荐
可缩放Reloaded-一个针对可缩放元素的复用组件
Mar 10 Javascript
javascript 用记忆函数快速计算递归函数
Mar 15 Javascript
使用JS读秒使用示例
Sep 21 Javascript
JavaScript获取图片真实大小代码实例
Sep 24 Javascript
jQuery中:button选择器用法实例
Jan 04 Javascript
js+HTML5实现canvas多种颜色渐变效果的方法
Jun 05 Javascript
jquery+json实现动态商品内容展示的方法
Jan 14 Javascript
JS结合bootstrap实现基本的增删改查功能
Jul 22 Javascript
详解React开发必不可少的eslint配置
Feb 05 Javascript
vue-router的使用方法及含参数的配置方法
Nov 13 Javascript
微信小程序实现发送模板消息功能示例【通过openid推送消息给用户】
May 05 Javascript
js定时器出现第一次延迟的原因及解决方法
Jan 04 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
PHP跨平台获取服务器IP地址自定义函数分享
2014/12/29 PHP
php实现Mongodb自定义方式生成自增ID的方法
2015/03/23 PHP
初识ThinkPHP控制器
2016/04/07 PHP
php多进程并发编程防止出现僵尸进程的方法分析
2020/02/28 PHP
js 获取子节点函数 (兼容FF与IE)
2010/04/18 Javascript
分享几个超级震憾的图片特效
2012/01/08 Javascript
JavaScript之引用类型介绍
2012/08/10 Javascript
基于jquery的文章中所有图片width大小批量设置方法
2013/08/01 Javascript
让复选框只能选择一项的方法
2013/10/08 Javascript
jquery 缓存问题的几个解决方法
2013/11/11 Javascript
一款简单的jQuery图片标注效果附源码下载
2016/03/22 Javascript
浅谈jquery上下滑动的注意事项
2016/10/13 Javascript
JQuery 动态生成Table表格实例代码
2016/12/02 Javascript
js 只比较时间大小的实例
2017/10/26 Javascript
详解一个基于套接字实现长连接的express
2019/03/28 Javascript
JS隐藏号码中间4位代码实例
2019/04/09 Javascript
基于Vue的商品主图放大镜方案详解
2019/09/19 Javascript
vuejs实现下拉框菜单选择
2020/10/23 Javascript
python使用cookielib库示例分享
2014/03/03 Python
跟老齐学Python之总结参数的传递
2014/10/10 Python
Python实现的简单hangman游戏实例
2015/06/28 Python
Python 中的 else详解
2016/04/23 Python
Python Socket使用实例
2017/12/18 Python
python函数修饰符@的使用方法解析
2019/09/02 Python
python实现两个一维列表合并成一个二维列表
2019/12/02 Python
pytorch中的自定义数据处理详解
2020/01/06 Python
pytorch GAN生成对抗网络实例
2020/01/10 Python
jupyter notebook清除输出方式
2020/04/10 Python
html5唤起app的方法
2017/11/30 HTML / CSS
澳大利亚制造的羊皮靴:Original UGG Boots
2017/11/13 全球购物
西班牙多品牌鞋店连锁店:Krack
2018/11/30 全球购物
Koral官方网站:女性时尚运动服
2019/04/10 全球购物
Delphi笔试题
2016/11/14 面试题
学校三八妇女节活动情况总结
2014/03/09 职场文书
护士感人事迹
2014/05/01 职场文书
班级心理活动总结
2014/07/04 职场文书