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 相关文章推荐
向fckeditor编辑器插入指定代码的方法
May 25 Javascript
在firefox和Chrome下关闭浏览器窗口无效的解决方法
Jan 16 Javascript
javascript判断元素存在和判断元素存在于实时的dom中的方法
Jan 17 Javascript
Bootstrap 3浏览器兼容性问题及解决方案
Apr 11 Javascript
jQuery表单设置值的方法
Jun 30 jQuery
利用yarn代替npm管理前端项目模块依赖的方法详解
Sep 04 Javascript
p5.js入门教程之平滑过渡(Easing)
Mar 16 Javascript
mpvue性能优化实战技巧(小结)
Apr 17 Javascript
vue element 中的table动态渲染实现(动态表头)
Nov 21 Javascript
vue组件传值的实现方式小结【三种方式】
Feb 05 Javascript
node.JS二进制操作模块buffer对象使用方法详解
Feb 06 Javascript
原生JavaScript之es6中Class的用法分析
Feb 23 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
为php4加入动态flash文件的生成的支持
2006/10/09 PHP
我的论坛源代码(三)
2006/10/09 PHP
PHP中=赋值操作符对不同数据类型的不同行为
2011/01/02 PHP
php数组函数序列 之array_count_values() 统计数组中所有值出现的次数函数
2011/10/29 PHP
PHP中使用SimpleXML检查XML文件结构实例
2015/01/07 PHP
PHP操作mysql数据库分表的方法
2016/06/09 PHP
thinkphp5框架扩展redis类方法示例
2019/05/06 PHP
使用prototype.js进行异步操作
2007/02/07 Javascript
JS小功能(offsetLeft实现图片滚动效果)实例代码
2013/11/28 Javascript
浅析XMLHttpRequest的缓存问题
2013/12/13 Javascript
Jquery 获取对象的几种方式介绍
2014/01/17 Javascript
JS使用replace()方法和正则表达式进行字符串的搜索与替换实例
2014/04/10 Javascript
js实现简单的左右两边固定广告效果实例
2015/04/10 Javascript
JavaScript点击按钮后弹出透明浮动层的方法
2015/05/11 Javascript
详解Vue中添加过渡效果
2017/03/20 Javascript
详解为Bootstrap Modal添加拖拽的方法
2018/01/05 Javascript
vue data恢复初始化数据的实现方法
2019/10/31 Javascript
JavaScript复制变量三种方法实例详解
2020/01/09 Javascript
ant-design表单处理和常用方法及自定义验证操作
2020/10/27 Javascript
python读取txt文件,去掉空格计算每行长度的方法
2018/12/20 Python
Python实现直方图均衡基本原理解析
2019/08/08 Python
Python编程中类与类的关系详解
2019/08/08 Python
python写文件时覆盖原来的实例方法
2020/07/22 Python
Nordgreen台湾官网:极简北欧设计手表
2019/08/21 全球购物
介绍一下except的用法和作用
2015/01/22 面试题
工程监理应届生求职信
2013/11/09 职场文书
高中自我评价范文
2014/01/27 职场文书
一份创业计划书范文
2014/02/08 职场文书
个人贷款担保书
2014/04/01 职场文书
区域经理岗位职责
2015/02/02 职场文书
当幸福来敲门观后感
2015/06/01 职场文书
班主任寄语2016
2015/12/04 职场文书
2016年119消防宣传日活动总结
2016/04/05 职场文书
大学生创业,为什么都会选择快餐饮?
2019/08/08 职场文书
MySQL基础(一)
2021/04/05 MySQL
如何获取numpy array前N个最大值
2021/05/14 Python