一个简单的哈希表JS仿真实例
复制代码代码如下所示:函数哈希表(HashTable) / /自定义
{
这_hash =新的对象();
this.add =功能(键,值){
如果(typeof(关键)!=未定义){
如果(this.contains(关键)= = false){
这个_hash {key} = typeof(价值)= =未定义空:价值;
返回true;
{人}
返回false;
}
{人}
返回false;
}
}
this.remove =功能(关键){删除。_hash {key};}
this.count =函数(){ var i = 0;对于(VaR K在这_hash){我++;}归我;}
this.items =功能(关键){ return这个。_hash {key};}
this.contains =功能(关键){ return(这类型。_hash {key})!=未定义;}
this.clear =函数(){(VaR K为本。_hash){删除。_hash {K };} }
}
复制代码代码如下所示:
哈希表
功能表(){
this.objarr = { };
这数= 0;
添加
这个函数=函数(键,值){
如果(this.objarr.hasownproperty(关键)){
返回false;如果键已经存在,则不添加
}
{其他
这objarr { } =价值的关键;
这个数+ +;
返回true;
}
}
是否包含
这个=函数(key){
返回this.objarr.hasownproperty(关键);
}
把一个 / /这是一样的。objarr {key}
this.getvalue =功能(关键){
如果(this.contains(关键)){
退货。objarr {key};
}
{其他
把错误(不包括哈希表的关键:+字符串(关键)); / /脚本错误
返回;
}
}
删除函数(键){
如果(this.contains(关键)){
删除。objarr {key};
this.count--;
}
}
空
这个函数。
this.objarr = {};这个数= 0;
}
}
测试代码:
工作人员
函数雇员(id,用户名){
this.id = ID;
this.username =用户名;
}
函数测试(){
VaR HT =新的哈希表();
无功tmpemployee = null;
对于(var i = 1;i < 6;i + +){
tmpemployee =新员工(我,employee_+我);
HT。添加(我tmpemployee);
}
对于(var i = 1;i <计数;i + +){
警报(ht.getvalue(我)。用户名); / /实际上相当于HT。objarr {我用户名}。
/ /警报(HT。objarr {我}。用户名);
}
删除(1);
警报(ht.contains(1)); / /假
警报(ht.contains(2)); / /真的
/ /警报(ht.getvalue(1)); / /异常
var result = ht.getvalue(2);
如果(结果)!= NULL){
警报(雇员ID:+ result.id +;用户名:用户名+结果。);
}
添加(2,)这一个键已经存在!);
()
警报(计数);
}