Javascript 实现Hashtable

本文介绍了一种使用 JavaScript 实现的 HashTable 数据结构,详细解释了其核心方法如 Add、GetValue 和 Remove 的工作原理,并提供了完整的示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//javascript Hashtable 实现
var Hashtable=function(){
    
this.Clear();
}

Hashtable.prototype
={
    Add:    
function(key,value){    //实现Add 方法
                if(!key) return;
                
if(typeof(value) === 'undefined'return;
                
this.Items[key] = value;
                
this.Count++;
            }
,
    Clear:    
function(){                //实现Clear 方法
                this.Items=null;
                
this.Items=new Object();
            }
,
    ContainsKey:
function(key){        //实现ContainsKey,检测表中是否包含特定的键
                if(!key)return false;
                
if(typeof(this.Items[key])=='undefined')
                    
return false;
                
return true;
            }
,
    ContainsValue:
function(value){    //实现ContainsValue,检测表中是否包含特定的值
                if(!value)return false;
                
for (var key in this.Items){
                   
if(this.Items[key]==value)
                        
return true;
                }

                
return false;
            }
,
    Count:    
0,        //键或值总数
    GetValue:function(key){    //实现GetValue方法,通过键值获取value;                
                if(!this.ContainsKey(key))return null;
                
return this.Items[key];
            }
,
    GetValueAt:
function(index){    //实现GetValueAt方法,通过索引值获取value;
                if(isNaN(index)) return null;
                
if(index<0 || index>this.Count)return null;
                
var i=0;
                
for(var key in this.Items){
                    
if(i == index)return this.Items[key];
                    i
++;
                }

                
return null;
            }
,
    Keys:    
function(){  //实现Keys方法,获取hash表的所有key 返回Array
                var arr=new Array();
                
for(var key in this.Items)
                    arr.push(key);
                
return arr;
            }
,
    Remove:    
function(key){    //实现Remove方法,删除某个特定的键
                if(!key)return;
                
delete this.Items[key];
                
this.Count--;
                
return;
            }
,
    RemoveAt:
function(index){    //实现Remove方法,删除某个特定的索引值
                if(isNaN(index)) return null;
                
if(index<0 || index>this.Count)return null;
                
var i=0;
                
for(var key in this.Items){
                    
if(i == index){this.Remove(key);return;}
                    i
++;
                }

                
return null;
            }
,
    RemoveRange:
function(startindex,endindex){    //RemoveRange 删除索引值在某个范围的值
                if(isNaN(startindex) || isNaN(endindex)) return null;
                
if(startindex<0)startindex=0;
                
if(endindex>this.Count-1)endindex=this.Count-1;
                
for(var i=startindex;i<this.Count;i++)
                    
this.RemoveAt(i);
            }
,
    Values:
function(){    //实现Values方法,获取hash表的所有键的值 返回Array
                var arr=new Array();
                
for(var key in this.Items)
                    arr.push(
this.Items[key]);
                
return arr;
            }

    }


//测试hashtable
function testhash(){
    
var ht=new Hashtable();
    ht.Add(
'a',2);
    ht.Add(
'b',4);
    ht.Add(
1,5);
    alert(ht.Count);
    ht.RemoveAt(
2);
    alert(ht.Count);
    alert(ht.Items[
1]);
    alert(ht.GetValueAt(
0));
}

 

修正: 

Add: function(key,value){ //实现Add 方法
    if(!key) return;
    if(typeof(value) === 'undefined') return;
    if(!this.ContainsKey(key))this.Count++;   /*修正Add时Count计数不准确*/
    this.Items[key] = value;
   },

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值