【js实现hashtable】js实现hashtable的赋值、取值、遍历的教程

时间:2020-12-16  来源:js教程  阅读:

本文实例讲述了js实现hashtable的赋值、取值、遍历操作。分享给大家供大家参考,具体如下:

哈希表(Hashtable)这个概率应该是#c里面的概念,用来赋值、取值、遍历、排序操作提高效率。想起这个东西其实使我们以前经常遇到这样的面试题,一个很大的数组可能有100000个,如何快速知道它里面的出现最多的次数,那么这里我们可能就要用Hashtable的相关知识了。Javascript中,object的实现就是hash表,因此只要在object上封装点方法,再利用原生的hasOwnProperty方法就可以实现简单高效的hashtable。

一、什么是哈希表(Hashtable)

二、哈希表的简单操作

三、js模拟哈希表的简单操作

一、什么是哈希表(Hashtable)

Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似key/value的键值对,其中key通常可用来快速查找,同时key是区分大小写;value用于存储对应于key的值。Hashtable中key/value键值对均为object类型,所以Hashtable可以支持任何类型的key/value键值对。

二、哈希表的简单操作C#

在哈希表中添加一个key/value键值对:

HashtableObject.Add(key,value);

在哈希表中去除某个key/value键值对:

HashtableObject.Remove(key);

从哈希表中移除所有元素:

HashtableObject.Clear();

判断哈希表是否包含特定键key:

HashtableObject.Contains(key);

三、js模拟哈希表的简单操作

HashTable.prototype = {     contructor:HashTable,     //初始化     initialize:function(){       this.obj = {};     },     //获取hashTable中对象唯一出现的次数     count:function(){       varcount = 0;       for(variinthis.content) count++;       returncount;     },     //返回hashTable中的值     items:function(key){       if(this.contains(key)){         returnthis.obj[key];       }     },     //增加值到hashtable     add:function(key,value){       if(this.obj.hasOwnProperty(key)){         returnfalse;       }else{         this.obj[key] = value;         returntrue;       }     },     //清空hashtable中的值     clear:function(){       this.obj = {};     },     //检测hashTable对象中是否含有此属性     contains:function(key){       returnthis.obj.hasOwnProperty(key);     },     //移除hashTable中对象的值     remove:function(key){       deletethis.obj[key];     } }

这样我们就能像c#语言里面的那样进行操作了。

还一个简单的变体版:

// js哈希表 functionHashTable() {   this.ObjArr = {};   this.Count = 0;   //添加   this.Add =function(key, value) {     if(this.ObjArr.hasOwnProperty(key)) {       returnfalse;//如果键已经存在,不添加     }else{       this.ObjArr[key] = value;       this.Count++;       returntrue;     }   }   //是否包含某项   this.Contains =function(key) {     returnthis.ObjArr.hasOwnProperty(key);   }   //取某一项 其实等价于this.ObjArr[key]   this.GetValue =function(key){     if(this.Contains(key)) {       returnthis.ObjArr[key];     }else{       throwError("Hashtable not cotains the key: "+ String(key));//脚本错误       //return;     }   }   //移除   this.Remove =function(key) {     if(this.Contains(key)) {       deletethis.ObjArr[key];       this.Count--;     }   }   //清空   this.Clear =function(){     this.ObjArr = {};this.Count = 0;   } } //员工 functionemployee(id, userName) {   this.id = id;   this.userName = userName; } functiontest() {   varht =newHashTable();   vartmpEmployee =null;   for(vari = 1; i < 6; i++) {     tmpEmployee =newemployee(i,"Employee_"+ i);     ht.Add(i, tmpEmployee);   }   for(vari = 1; i <= ht.Count; i++) {     alert(ht.GetValue(i).userName);//其实等价于ht.ObjArr[i].userName     //alert(ht.ObjArr[i].userName);   }   ht.Remove(1);   alert(ht.Contains(1));//false   alert(ht.Contains(2));//true   //alert(ht.GetValue(1)); //异常   varresult = ht.GetValue(2);   if(result !=null) {     alert("Employee Id:"+ result.id +";UserName:"+ result.userName);   }   ht.Add(2,"这一个key已经存在!");//Add无效   //ht.Clear(); //清空   alert(ht.Count); }

最后解决一下,开头说的那个问题

Array.prototype.maxNum =function(){   vararr =this,obj={};   for(vari =0, len=arr.length;imax){       max = obj[key];       maxStr = key;     }   }   //alert(maxStr);   return[maxStr,max]; }

【js实现hashtable】js实现hashtable的赋值、取值、遍历的教程

http://m.bbyears.com/wangyezhizuo/116900.html

推荐访问:
相关阅读 猜你喜欢
本类排行 本类最新