一个用javascript写的hashtable类

本文介绍了一种使用JavaScript实现的简单哈希表数据结构。通过具体代码示例展示了如何添加、删除元素,以及如何检查元素是否存在等基本操作。此外,还提供了获取所有键值对的方法,并演示了如何遍历哈希表。

<script language="javascript" type="text/javascript">

function Hashtable()
{
    this._hash        = new Object();
    this.add        = function(key,value){
                        if(typeof(key)!="undefined"){
                            if(this.contains(key)==false){
                                this._hash[key]=typeof(value)=="undefined"?null:value;
                                return true;
                            } else {
                                return false;
                            }
                        } else {
                            return false;
                        }
                    }
    this.remove        = function(key){delete this._hash[key];}
    this.count        = function(){var i=0;for(var k in this._hash){i++;} return i;}
    this.items        = function(key){return this._hash[key];}
    this.contains    = function(key){ return typeof(this._hash[key])!="undefined";} //判断key是否存在
    this.clear        = function(){for(var k in this._hash){delete this._hash[k];}}
 this.hasvalue        = function(value){
  for(var k in this._hash){
   if(this._hash[k]==value){
    return true;
   }
  }
  return false;
 }
 this.getallvalues        = function(){
  var tmp="";
  for(var k in this._hash){
   tmp += k+","+a._hash[k]+";";
  }
  return tmp;
 }
 this.getjosnvalues        = function(){
  var tmp="{";
  for(var k in this._hash){
   tmp += k+":"+a._hash[k]+",";
  }
  tmp+="}";
  return tmp;
 }
 this.getjosnitems        = function(){
  var tmp="[";
  for(var k in this._hash){
   tmp += "{"+k+":"+a._hash[k]+"},";
  }
  tmp=tmp.substring(0,tmp.length-1)+"]";
  return tmp;
 }
}

var a = new Hashtable();

a.add("aa");
a.add("bb",2342);
a.add("bb",2344);

alert(a.hasvalue(2342));

a.add("cc",2342);

for(var k in a._hash){
 alert(k+":"+a._hash[k]);
}

alert("移除");
a.remove("aa");

for(var k in a._hash){
 alert(k+":"+a._hash[k]);
}

alert("a.getallvalues():"+a.getallvalues());
alert("this.getjosnitems():"+this.getjosnitems());


/*
alert("计算总数");
alert(a.count());
alert("显示bb是否是数字");
alert(a.contains("bb"));
alert("显示aa是否是数字");
alert(a.contains("aa"));
alert("显示bb内容");
alert(a.items("bb"));
alert("显示aa内容");
alert(a.items("aa"));
*/
</script>

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冷月宫主

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值