J**aScript中实现Map的示例代码

时间:2016.04.18 发布人:yoyochan740

J**aScript中实现Map的示例代码

已解决问题

谷歌yoyochan740用户在2016.04.18提交了关于“老梁观世界J**aScript中实现Map的示例代码”的提问,欢迎大家涌跃发表自己的观点。目前共有1个回答,最后更新于2025-03-03T11:59:42。希望大家能够帮助她。

详细问题描述及疑问:期待您的答案,我不知道说什么才好,除了谢谢 !

希望以下的回答,能够帮助你。

第1个回答

用户名:kEep沫sMile  

不废话了,直接贴代码了。

代码一:

varmap=new问答Map();map.put("a","A");map.put("b","B");map.put("c","C");map.get("a");//返回:Amap.ent美被万单广乡径介接率rySet()//返回Entity[{key,value},{key,va念练雷快排激少候哪犯据lue}]map冲接么什片采呢英学.containsKey('kevin')//返回:falsefunctionMap(){this.ke群雷围亮论吃发造车纪施ys=newArray();***.data=newObject();/***放入一个键衷*@朝正补param{String}key*@param{Object}value*/this.put=function(key,value){if(***.data[key]==**ll){this.keys.push(key);***.data[key]=value;}else{***.data[key]=***.data[key];}returntrue;};/***获取某键对应的值*@param{String}key*@return{Object}value*/thi互机告识答s.get=function(之刻纪培key){return***.data[key];};/***删除一个仍第延完利兴飞键衷*@param{String}key*/this.remove=function(key){for(vari=0;i<this.keys.length;i++){if(key===this.keys[i]){vardel_keys=this.keys.splice(i,1);for(kindel_keys){***.data[k]=**ll;}returntrue;}}returnfalse;};/***遍历Map,执行处理函数**@param{Function}回调函数function(key,value,宪概整已害洋愿index){..}*/this.each=function(fn)尼声构无才使{if(typeoffn!='function'){retu亮油业优业rn;}varlen=this.keys.length;for(vari=0;i<len;i++)卫未几座空言烈程宽科专{vark=this.案细否溶培交期通具伟keys[i];fn(k,***.data[k],i);}};/***获取键值红光必别进行数组*@returnentity[{key,value},{key,value}]*/this.entrySet=funct告ion(){varlen家采谁凯井掉呼=this.keys.length;varentrys=newArray(len);for(vari=0;i<len;i夫++){entrys[i]={key:this.keys[i],value:***.data[this.keys[i]]};}returnentrys;};/***百热席皮判断Map是否为空*/this.isEmpty=function(){returnthis.keys.length==0;};/***获取键衷数量*/this.size=function(){returnthis.keys.length;};this.containsKey=function(key){returnthis.keys.filter(function(v){if(v===key){returnkey;}}).length>0;};/***重写toString*/this.toString=function(){vars="{";for(vari=0;i<this.keys.length;i++){vark=this.keys[i];s+=k+"="+***.data[k];if(this.keys.length>i+1){s+=','}}s+="}";returns;};/***解析字符串到Map*{a=A,b=B,c=B,}*/this.parserStringAndAddMap=function(str){varcount=0;if(str&&str.length>0){str=str.trim();varstartIndex=str.indexOf("{"),endIndex=str.lastIndexOf("}");if(startIndex!==-1&&endIndex!==-1){str=str.substring(startIndex+1,endIndex);vararrs=str.split(",");for(vari=0;i<arrs.length;i++){varkv=arrs[i].trim();if(kv.length>0&&kv.indexOf("=")!==-1){varkv_arr=kv.split("=");if(kv_arr.length==2){if(this.put(kv_arr[0].trim(),kv_arr[1].trim())){count++;}else{console.error('error:kv:'+kv);}}}}}else{console.log("dataerror:"+str);}}else{console.log('dataisnotempty');}returncount;};}

代码二:

Array.prototype.remove=function(s){for(vari=0;i<this.length;i++){if(s==this[i])this.splice(i,1);}}/***SimpleMap***varm=newMap();*m.put('key','value');**vars="";*m.each(function(key,value,index){*s+=index+":"+key+"="+value+"\n";*});*alert(s);**@authordewitt*@date2008-05-24*/functionMap(){/**存放键的数组(遍历用到)*/this.keys=newArray();/**存放***/***.data=newObject();/***放入一个键衷*@param{String}key*@param{Object}value*/this.put=function(key,value){if(***.data[key]==**ll){this.keys.push(key);}***.data[key]=value;};/***获取某键对应的值*@param{String}key*@return{Object}value*/this.get=function(key){return***.data[key];};/***删除一个键衷*@param{String}key*/this.remove=function(key){this.keys.remove(key);***.data[key]=**ll;};/***遍历Map,执行处理函数**@param{Function}回调函数function(key,value,index){..}*/this.each=function(fn){if(typeoffn!='function'){return;}varlen=this.keys.length;for(vari=0;i<len;i++){vark=this.keys[i];fn(k,***.data[k],i);}};/***获取键值数组(类似J**a的entrySet())*@return键衷象{key,value}的数组*/this.entrys=function(){varlen=this.keys.length;varentrys=newArray(len);for(vari=0;i<len;i++){entrys[i]={key:this.keys[i],value:***.data[i]};}returnentrys;};/***判断Map是否为空*/this.isEmpty=function(){returnthis.keys.length==0;};/***获取键衷数量*/this.size=function(){returnthis.keys.length;};/***重写toString*/this.toString=function(){vars="{";for(vari=0;i<this.keys.length;i++,s+=','){vark=this.keys[i];s+=k+"="+***.data[k];}s+="}";returns;};}functiontestMap(){varm=newMap();m.put('key1','Comtop');m.put('key2','南方电网');m.put('key3','景新花园');alert("init:"+m);m.put('key1','康拓普');alert("setkey1:"+m);m.remove("key2");alert("removekey2:"+m);vars="";m.each(function(key,value,index){s+=index+":"+key+"="+value+"\n";});alert(s);}

以上内容通过两段代码给大家分享了J**aScript中实现Map,希望大家喜欢。