一个js简易模拟map结构,够用了。
<!-- var map=function(){ this.maparr={}; this.arrlength=0; //假如有重复key,则不存入 this.put=function(key,value){ if(!this.containskey(key)){ this.maparr[key]=value; this.arrlength=this.arrlength+1; } } this.get=function(key){ return this.maparr[key]; } //传入的参数必须为map结构 this.putall=function(map){ if(map.ismap(map)){ var innermap=this; map.each(function(key,value){ innermap.put(key,value); }) }else{ alert("传入的非map结构"); } } this.remove=function(key){ delete this.maparr[key]; this.arrlength=this.arrlength-1; } this.size=function(){ return this.arrlength; } //判断是否包含key this.containskey=function(key){ return (key in this.maparr); } //判断是否包含value this.containsvalue=function(value){ for(var p in this.maparr){ if(this.maparr[p]==value){ return true; } } return false; } //得到所有key 返回数组 this.keys=function(){ var keysarr=[]; for(var p in this.maparr){ keysarr[keysarr.length]=p; } return keysarr; } //得到所有value 返回数组 this.values=function(){ var valuesarr=[]; for(var p in this.maparr){ valuesarr[valuesarr.length]=this.maparr[p]; } return valuesarr; } this.isempty=function(){ if(this.size()==0){ return false; } return true; } this.clear=function(){ this.maparr={}; this.arrlength=0; } //循环 this.each=function(callback){ for(var p in this.maparr){ callback(p,this.maparr[p]); } } } //判断是否是map对象 map.ismap=function(map){ return (map instanceof map); } var map=new map(); map.put("afei",25); map.put("yaoming",31); map.put("pp",2); map.put("bill","55"); map.remove("afei"); var map2=new map(); map2.put("003",333); map2.put("004",444); map.putall(map2); map.each(function(key,value){ alert(key+" : "+value); }) //-->