javascript hashtable 修正版 下载_Javascript教程-查字典教程网
javascript hashtable 修正版 下载
javascript hashtable 修正版 下载
发布时间:2016-12-30 来源:查字典编辑
摘要:修正hashtableobj.set("length","0")bug可以设置key忽略大小写可以clonehashtable对象可以使用o...

修正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.jb51.net/201012/yuanma/jshashtable.rar

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新Javascript教程学习
    热门Javascript教程学习
    编程开发子分类