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 相关文章推荐
一个基于jQuery的树型插件(OrangeTree)使用介绍
May 03 Javascript
原生JS操作网页给p元素添加onclick事件及表格隔行变色
Dec 01 Javascript
JS方法调用括号的问题探讨
Jan 24 Javascript
JS中mouseover和mouseout多次触发问题如何解决
Jun 06 Javascript
使用Ajax生成的Excel文件并下载的实例
Nov 21 Javascript
jquery设置css样式的多种方法(总结)
Feb 21 Javascript
Angular2下使用pdf插件的方法详解
Apr 29 Javascript
jQuery实现文字超过1行、2行或规定的行数时自动加省略号的方法
Mar 28 jQuery
vue-router重定向不刷新问题的解决
Jun 25 Javascript
JavaScript设计模式之缓存代理模式原理与简单用法示例
Aug 07 Javascript
vue.js中proxyTable 转发请求的实现方法
Sep 20 Javascript
JavaScript类的继承操作实例总结
Dec 20 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中strtotime函数使用方法详解
2011/11/27 PHP
php mysql 判断update之后是否更新了的方法
2012/01/10 PHP
[原创]PHPCMS遭遇会员投稿审核无效的解决方法
2017/01/11 PHP
jQuery的链式调用浅析
2010/12/03 Javascript
使用phantomjs进行网页抓取的实现代码
2014/09/29 Javascript
JavaScript学习笔记之ES6数组方法
2016/03/25 Javascript
angularJS 发起$http.post和$http.get请求的实现方法
2017/05/18 Javascript
关于JS与jQuery中的文档加载问题
2017/08/22 jQuery
Angular实现下拉框模糊查询功能示例
2018/01/03 Javascript
javascript与PHP动态往类中添加方法对比
2018/03/21 Javascript
mock.js实现模拟生成假数据功能示例
2019/01/15 Javascript
详解auto-vue-file:一个自动创建vue组件的包
2019/04/26 Javascript
vue cli3 配置proxy代理无效的解决
2019/10/30 Javascript
vue使用openlayers实现移动点动画
2020/09/24 Javascript
如何手写简易的 Vue Router
2020/10/10 Javascript
[00:31]DOTA2荣耀之路7:Miracle-空血无敌斩
2018/05/31 DOTA
跟老齐学Python之dict()的操作方法
2014/09/24 Python
Python爬虫实例_利用百度地图API批量获取城市所有的POI点
2018/01/10 Python
分享一下Python数据分析常用的8款工具
2018/04/29 Python
Python模块、包(Package)概念与用法分析
2019/05/31 Python
在pycharm中为项目导入anacodna环境的操作方法
2020/02/12 Python
tensorflow将图片保存为tfrecord和tfrecord的读取方式
2020/02/17 Python
关于CSS Tooltips(鼠标经过时显示)的效果
2013/04/10 HTML / CSS
canvas实现图片马赛克的示例代码
2018/03/26 HTML / CSS
加拿大在线旅游公司:Flighthub
2019/03/11 全球购物
汽修专业学生自我鉴定
2013/11/16 职场文书
大学四年规划书范文
2013/12/27 职场文书
洗车工岗位职责
2014/03/15 职场文书
销售团队激励口号
2014/06/06 职场文书
同学聚会策划方案
2014/06/06 职场文书
群众路线四风问题整改措施
2014/09/27 职场文书
优秀党员事迹材料
2014/12/18 职场文书
大学生旷课检讨书1000字
2015/02/19 职场文书
2015年学校安全工作总结
2015/04/22 职场文书
2015年医务科工作总结范文
2015/05/26 职场文书
医院岗前培训心得体会
2016/01/08 职场文书