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拖拽组件
Jul 28 Javascript
js数组去重的5种算法实现
Nov 04 Javascript
深入浅析jQuery对象$.html
Aug 22 Javascript
关于js二维数组和多维数组的定义声明(详解)
Oct 02 Javascript
JavaScript实现简单的树形菜单效果
Jun 23 Javascript
node的process以及child_process模块学习笔记
Mar 06 Javascript
JSON生成Form表单的方法示例
Nov 21 Javascript
微信小程序版本自动更新的方法
Jun 14 Javascript
axios如何利用promise无痛刷新token的实现方法
Aug 27 Javascript
如何使用jQuery操作Cookies方法解析
Sep 08 jQuery
vue中路由跳转不计入history的操作
Sep 21 Javascript
微信小程序反编译的实现
Dec 10 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
图形数字验证代码
2006/10/09 PHP
php设计模式 Interpreter(解释器模式)
2011/06/26 PHP
ThinkPHP3.1新特性之Action参数绑定
2014/06/19 PHP
thinkPHP交易详情查询功能详解
2016/12/02 PHP
将光标定位于输入框最右侧实现代码
2012/12/04 Javascript
js实现广告漂浮效果的小例子
2013/07/02 Javascript
Jquery网页内滑动缓冲导航的实现代码
2015/04/05 Javascript
ES6入门教程之Iterator与for...of循环详解
2017/05/17 Javascript
Vue路由跳转问题记录详解
2017/06/15 Javascript
微信小程序时间标签和时间范围的联动效果
2019/02/15 Javascript
微信小程序学习笔记之本地数据缓存功能详解
2019/03/29 Javascript
html+jQuery实现拖动滑块图片拼图验证码插件【移动端适用】
2019/09/10 jQuery
Paypal支付不完全指北
2020/06/04 Javascript
[01:04:01]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS DT第一场
2014/05/24 DOTA
Python OpenCV 直方图的计算与显示的方法示例
2018/02/08 Python
解决pycharm无法识别本地site-packages的问题
2018/10/13 Python
Python自定义一个类实现字典dict功能的方法
2019/01/19 Python
Python3 执行Linux Bash命令的方法
2019/07/12 Python
Python 实现打印单词的菱形字符图案
2020/04/12 Python
Python实现查找数据库最接近的数据
2020/06/08 Python
Python 操作SQLite数据库的示例
2020/10/16 Python
python中用ctypes模拟点击的实例讲解
2020/11/26 Python
css3 旋转按钮 使用CSS3创建一个旋转可变色按钮
2012/12/31 HTML / CSS
德国珠宝和手表在线商店:VALMANO
2019/03/24 全球购物
巴西Mr. Cat在线商店:购买包包和鞋子
2019/09/08 全球购物
说出一些常用的类,包,接口
2014/09/22 面试题
教师业务学习制度
2014/01/25 职场文书
工程部岗位职责
2015/02/10 职场文书
学习保证书怎么写
2015/02/26 职场文书
主题班会开场白
2015/06/01 职场文书
学校教代会开幕词
2016/03/04 职场文书
分享15个Webpack实用的插件!!!
2021/03/31 Javascript
Vue Element UI自定义描述列表组件
2021/05/18 Vue.js
浅析python中特殊文件和特殊函数
2022/02/24 Python
使用Java去实现超市会员管理系统
2022/03/18 Java/Android
Win11快速关闭所有广告推荐
2022/04/19 数码科技