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 相关文章推荐
用jscript启动sqlserver
Jun 21 Javascript
jQuery(1.6.3) 中css方法对浮动的实现缺陷分析
Sep 09 Javascript
jQuery+ajax中getJSON() 用法实例
Dec 22 Javascript
JS跨域交互(jQuery+php)之jsonp使用心得
Jul 01 Javascript
JS简单实现tab切换效果的多窗口显示功能
Sep 07 Javascript
JS实现数组去重复值的方法示例
Feb 18 Javascript
基于ES6作用域和解构赋值详解
Nov 03 Javascript
three.js 入门案例详解
Jan 23 Javascript
javascript实现商品图片放大镜
Nov 28 Javascript
微信小程序如何获取地址
Dec 24 Javascript
Vue向后台传数组数据,springboot接收vue传的数组数据实例
Nov 12 Javascript
js动态生成表格(节点操作)
Jan 12 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中的内存管理问题
2011/08/31 PHP
用 Composer构建自己的 PHP 框架之使用 ORM
2014/10/30 PHP
PHP学习笔记(三):数据类型转换与常量介绍
2015/04/17 PHP
PHP面试常用算法(推荐)
2016/07/22 PHP
thinkphp 中的volist标签在ajax操作中的特殊性(推荐)
2018/01/15 PHP
ThinkPHP框架中使用Memcached缓存数据的方法
2018/03/31 PHP
jquery 模拟雅虎首页的点击对话框效果
2010/04/11 Javascript
Jquery选择子控件&quot;大于号&quot;和&quot; &quot;区别介绍及使用示例
2013/06/25 Javascript
jquery队列函数用法实例
2014/12/16 Javascript
jQuery实现鼠标经过时出现隐藏层文字链接的方法
2015/10/12 Javascript
使用getBoundingClientRect方法实现简洁的sticky组件的方法
2016/03/22 Javascript
jQuery实现的表头固定效果实例【附完整demo源码下载】
2016/08/01 Javascript
Bootstrap CSS布局之代码
2016/12/17 Javascript
微信小程序获取手机系统信息的方法【附源码下载】
2017/12/07 Javascript
如何从零开始利用js手写一个Promise库详解
2018/04/19 Javascript
JavaScript数据结构与算法之二叉树插入节点、生成二叉树示例
2019/02/21 Javascript
在Vue中使用this.$store或者是$route一直报错的解决
2019/11/08 Javascript
跟老齐学Python之坑爹的字符编码
2014/09/28 Python
python中requests小技巧
2017/05/10 Python
PyQt5利用QPainter绘制各种图形的实例
2017/10/19 Python
Python中GIL的使用详解
2018/10/03 Python
Python设计模式之适配器模式原理与用法详解
2019/01/15 Python
python版百度语音识别功能
2019/07/09 Python
Python3简单爬虫抓取网页图片代码实例
2019/08/26 Python
详解使用Python下载文件的几种方法
2019/10/13 Python
python进程的状态、创建及使用方法详解
2019/12/06 Python
详解如何修改jupyter notebook的默认目录和默认浏览器
2021/01/24 Python
tensorflow2.0教程之Keras快速入门
2021/02/20 Python
英国女士和男士时尚服装网上购物:Top Labels Online
2018/03/25 全球购物
《巨人的花园》教学反思
2014/02/12 职场文书
2014全国两会心得体会
2014/03/17 职场文书
重阳节标语大全
2014/10/07 职场文书
个人贷款授权委托书样本
2014/10/07 职场文书
2014年初级职称工作总结
2014/12/08 职场文书
python实现自动化群控的步骤
2021/04/11 Python
纯CSS如何禁止用户复制网页的内容
2021/11/01 HTML / CSS