javascript 实现map集合
前几天项目上想用map集合一样的东西,简单拿对象拼了一下子,今天闲的慌实现一下
大家不要见笑
代码
varMap=function(){
/************基础变量**************/
varhashmap={};
varkeys=[];
varvals=[];
varentrys=[];
varsize=0;
varindex={};
varEntry=function(key,value){
varentryKey=key;
varentryValue=value;
this.getKey=function(){
returnentryKey;
};
this.getValue=function(){
returnentryValue;
};
};
/************基本方法按字母排序**************/
this.clear=function(key){
hashmap[key]=undefined;
vari=index[key];
entrys.splice(i,1);
vals.splice(i,1);
keys.splice(i,1);
size--;
};
this.entrySet=function(){
returnentrys;
};
this.get=function(key){
returnhashmap[key];
};
this.isEmpty=function(){
if(hashmap)returntrue;
returnfalse;
};
this.keySet=function(){
returnkeys;
};
this.put=function(key,value){
if(!this.get(key)){
entrys.push(newEntry(key,value));
keys.push(key);
vals.push(value);
index[key]=size;
size++;
}else{
vari=index[key];
entrys[i]=newEntry(key,value);
vals[i]=value;
}
hashmap[key]=value;
};
this.size=function(){
returnsize;
};
this.values=function(){
returnvals;
};
};
/************扩展方法**************/
Map.prototype={
containsKey:function(key){
if(this.get(key))returntrue;
returnfalse;
},
putAll:function(set){
for(vareinset){
if(set[e]){
this.put(e,set[e]);
}
}
},
remove:function(key){
varv=this.get(key);
this.clear(key);
returnv;
}
};
varh=newMap();
h.put('a',10);
h.put('b',11);
h.put('c',3);
h.put('d',5);
console.info(h.size());
h.clear('a');
console.info(h.containsKey('a'));
console.info(h.containsKey('b'));
console.info(h.size());
console.log(h.entrySet());
console.log(h.keySet());
console.log(h.values());
for(variinh.entrySet()){
varobj=h.entrySet()[i];
console.log(obj.getKey()+":"+obj.getValue());
}
以上所述就是本文的全部内容了,希望大家能够喜欢。