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程序设计有所帮助。