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 相关文章推荐
多个js与css文件的合并方法详细说明
Dec 26 Javascript
js给onclick事件赋值,动态传参数实例解说
Mar 28 Javascript
JQuery移动页面开发之屏幕方向改变与滚屏的实现
Dec 03 Javascript
onmouseover事件和onmouseout事件全面理解
Aug 15 Javascript
jQuery 全选 全部选 反选 实现代码
Aug 17 Javascript
iscroll实现下拉刷新功能
Jul 18 Javascript
Vue AST源码解析第一篇
Jul 19 Javascript
vue二级路由设置方法
Feb 09 Javascript
ES6入门教程之Array.from()方法
Mar 23 Javascript
5分钟快速看懂ES6中的反射与代理
Dec 19 Javascript
如何在vue中使用百度地图添加自定义覆盖物(水波纹)
Nov 03 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获取网页内容方法总结
2008/12/04 PHP
php页码形式分页函数支持静态化地址及ajax分页
2014/03/28 PHP
PHP中使用sleep造成mysql读取失败的案例和解决方法
2014/08/21 PHP
Yii配置文件用法详解
2014/12/04 PHP
nginx+thinkphp下解决不支持pathinfo模式
2015/07/01 PHP
php实现文件管理与基础功能操作
2017/03/21 PHP
Thinkphp 框架扩展之驱动扩展实例分析
2020/04/27 PHP
js自动下载文件到本地的实现代码
2013/04/28 Javascript
javascript中的=等号个数问题两个跟三个有什么区别
2013/10/23 Javascript
关于JavaScript命名空间的一些心得
2014/06/07 Javascript
jQuery随机密码生成的方法
2015/03/09 Javascript
jQuery实现table中的tr上下移动并保持序号不变的实例代码
2016/07/11 Javascript
jQuery对checkbox 复选框的全选全不选反选的操作
2016/08/09 Javascript
详解JavaScript数组过滤相同元素的5种方法
2017/05/23 Javascript
vue 怎么创建组件及组件使用方法
2017/07/27 Javascript
JS中的Replace()传入函数时的用法详解
2017/09/11 Javascript
JS实现的找零张数最小问题示例
2017/11/28 Javascript
自定义PC微信扫码登录样式写法
2017/12/12 Javascript
JS实现图片切换效果
2018/11/17 Javascript
在VUE中实现文件下载并判断状态的方法
2019/11/08 Javascript
跟老齐学Python之print详解
2014/09/28 Python
python使用PyGame播放Midi和Mp3文件的方法
2015/04/24 Python
python分割一个文本为多个文本的方法
2019/07/22 Python
Python OrderedDict的使用案例解析
2019/10/25 Python
np.dot()函数的用法详解
2020/01/17 Python
tensorflow从ckpt和从.pb文件读取变量的值方式
2020/05/26 Python
解决Alexnet训练模型在每个epoch中准确率和loss都会一升一降问题
2020/06/17 Python
Win10下用Anaconda安装TensorFlow(图文教程)
2020/06/18 Python
安装python依赖包psycopg2来调用postgresql的操作
2021/01/01 Python
HTML5中的Scoped属性使用实例
2014/04/23 HTML / CSS
教你怎样写好自我评价
2013/10/05 职场文书
优秀毕业大学生推荐信
2013/11/13 职场文书
班主任工作经验材料
2014/02/02 职场文书
工商治理实习生的自我评价分享
2014/02/20 职场文书
信用社主任竞聘演讲稿
2014/05/23 职场文书
2019最新企业员工考勤管理制度(通用版)!
2019/07/02 职场文书