本程序用JS寫(xiě)的一個(gè)類擬于JAVA中MAP類,可以對(duì)鍵值對(duì)進(jìn)行維護(hù).
/*
name:??? Map.js
author:? WindDC
date:??? 2006-10-27
content: 本程序用JS實(shí)現(xiàn)類擬JAVA中MAP對(duì)像的功能
*/
function Node(key,value){//鍵值對(duì)對(duì)象
??? this.key=key;
??? this.value=value;
}
function Map(){//Map類
??? this.nodes=new Array();
}
Map.prototype.put=function(key,value){//往容器中加入一個(gè)鍵值對(duì)
??????? for(var i=0;i<this.nodes.length;i++)
?????????? if(this.nodes[i].key==key){//如果鍵值已存在,則put方法為更新已有數(shù)據(jù)
?????????????? this.nodes[i].value=value;
?????????????? return;
?????????? }
??????? var node=new Node(key,value);
??????? this.nodes.push(node);
??????? return;
}//put
??
Map.prototype.get=function(key){//獲取指定鍵的值
??????? for(var i=0;i<this.nodes.length;i++)
?????????? if(this.nodes[i].key==key)
????????????? return this.nodes[i].value;
??????? return null;
}//get
????
Map.prototype.size=function(){//獲取容器中對(duì)象的個(gè)數(shù)
??? ?return this.nodes.length;
}//size
??? ????
Map.prototype.clear=function(){//清空容器
??? ?while(this.nodes.length>0)
??? ??? this.nodes.pop();?????
}//clear
?
Map.prototype.remove=function(key){//刪除指定值
??? ?for(var i=0;i<this.nodes.length;i++)
??? ??? if(this.nodes[i].key==key){
??? ??? ?? if(i>0)
??? ????????? var nodes1=this.nodes.concat(this.nodes.slice(0,i-1),this.nodes.slice(i+1));
??? ?????? else//刪除的是第一個(gè)元素
??? ?????? ? var nodes1=nodes.slice(1);
??? ?????? this.nodes=nodes1;
??? ??? }
}//remove
???
Map.prototype.isEmpty=function(){//是否為空
??? ?if(this.nodes.length==0)
??? ?? return true;
??? ?else
??? ?? return false;
}//isEmpty
???
Map.prototype.toString=function(){
???? var str="[";
???? for(var i=0;i<this.nodes.length;i++){
??????? if(i<this.nodes.length-1)
?????????? str=str+this.nodes[i].key+",";
?????? else
?????????? str=str+this.nodes[i].key;????
?? ?}
??? str=str+"]";
????return str;
}
只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。 | ||
![]() |
||
網(wǎng)站導(dǎo)航:
博客園
IT新聞
Chat2DB
C++博客
博問(wèn)
管理
|
||