JS模拟的Map类实现方法
本文实例讲述了JS模拟的Map类。分享给大家供大家参考,具体如下:
根据java中map的属性,实现key----value保存
1、使用数组方式存储数据,(使用闭包)
functionMap(){
varstruct=function(key,value){
this.key=key;
this.value=value;
}
varput=function(key,value){
for(vari=0;i<this.arr.length;i++){
if(this.arr[i].key===key){
this.arr[i].value=value;
return;
}
}
this.arr[this.arr.length]=newstruct(key,value);
}
varget=function(key){
for(vari=0;i<this.arr.length;i++){
if(this.arr[i].key===key){
returnthis.arr[i].value;
}
}
returnnull;
}
varremove=function(key){
varv;
for(vari=0;i<this.arr.length;i++){
v=this.arr.pop();
if(v.key===key){
continue;
}
this.arr.unshift(v);
}
}
varsize=function(){
returnthis.arr.length;
}
varisEmpty=function(){
returnthis.arr.length<=0;
}
this.arr=newArray();
this.get=get;
this.put=put;
this.remove=remove;
this.size=size;
this.isEmpty=isEmpty;
}
2、使用JSON方式存储数据(使用原型方式拓展方法)
functionMap(){
this.obj={};
this.count=0;
}
Map.prototype.put=function(key,value){
varoldValue=this.obj[key];
if(oldValue==undefined){
this.count++;
}
this.obj[key]=value;
}
Map.prototype.get=function(key){
returnthis.obj[key];
}
Map.prototype.remove=function(key){
varoldValue=this.obj[key];
if(oldValue!=undefined){
this.count--;
deletethis.obj[key];
}
}
Map.prototype.size=function(){
returnthis.count;
}
varmap=newMap();
map.put("key","map");
map.put("key","map1");
alert(map.get("key"));//map1
map.remove("key");
alert(map.get("key"));//undefined
更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《JavaScript切换特效与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript动画特效与技巧汇总》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》
希望本文所述对大家JavaScript程序设计有所帮助。