一个简单的JavaScript Map实例(分享)
用js写了一个Map,带遍历功能,请大家点评下啦。
//map.js
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();
/**存放数据*/
this.data=newObject();
/**
*放入一个键值对
*@param{String}key
*@param{Object}value
*/
this.put=function(key,value){
if(this.data[key]==null){
this.keys.push(key);
}
this.data[key]=value;
};
/**
*获取某键对应的值
*@param{String}key
*@return{Object}value
*/
this.get=function(key){
returnthis.data[key];
};
/**
*删除一个键值对
*@param{String}key
*/
this.remove=function(key){
this.keys.remove(key);
this.data[key]=null;
};
/**
*遍历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,this.data[k],i);
}
};
/**
*获取键值数组(类似Java的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:this.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+"="+this.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);
}
//testMap.htm
?
<html>
<head>
<title>TestMap</title>
<scriptlanguage="javascript"src="map.js">
</script>
</head>
<body>
<inputtype="button"value="test"onclick="testMap()">
</body>
</html>
以上这篇一个简单的JavaScriptMap实例(分享)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。