最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
js实现hashtable的赋值、取值、遍历的教程
时间:2016-12-26 编辑:简简单单 来源:一聚教程网
本文实例讲述了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;i
varkey = arr[i];
if( ! obj[key]){
obj[key] = 1;
}else{
obj[key]++;
}
}
varmax = -1,maxStr;
for( keyinobj){
if(obj[key]>max){
max = obj[key];
maxStr = key;
}
}
//alert(maxStr);
return[maxStr,max];
}
|
相关文章
- HTML简单购物数量小程序代码展示 10-31
- html canvas实现弹幕功能 10-31
- HTML中空格表示的意义 10-31
- html area标签解读 10-31
- html使用表单标签实现注册页面代码展示 10-31
- 使用HTML截图并保存为本地图片的代码展示 10-31