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 hashtable 修正版 下载
声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
Reply on: @reply_date@
@reply_contents@