<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    本程序用JS寫的一個(gè)類擬于JAVA中MAP類,可以對鍵值對進(jìn)行維護(hù).


    /*
    name:??? Map.js
    author:? WindDC
    date:??? 2006-10-27
    content: 本程序用JS實(shí)現(xiàn)類擬JAVA中MAP對像的功能
    */

    function Node(key,value){//鍵值對對象
    ??? this.key=key;
    ??? this.value=value;
    }

    function Map(){//Map類
    ??? this.nodes=new Array();
    }

    Map.prototype.put=function(key,value){//往容器中加入一個(gè)鍵值對
    ??????? 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(){//獲取容器中對象的個(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;
    }

    posted on 2006-12-01 17:24 WindDC 閱讀(1488) 評論(6)  編輯  收藏 所屬分類: js/ajax
    Comments
    • # re: 用JS實(shí)現(xiàn)的MAP類
      BeanSoft
      Posted @ 2006-12-05 13:24
      贊一個(gè)!  回復(fù)  更多評論   
    • # re: 用JS實(shí)現(xiàn)的MAP類
      胡曉光
      Posted @ 2008-11-04 13:46
      Map 里面竟然是個(gè)Array,似乎不太好,直接用原型做個(gè)Map不就行了么,而且刪除值的時(shí)候還要循環(huán)遍歷Array
      貼出我的方案:
      function HashMap(){
      this.length = 0;
      this.container = {};
      }

      HashMap.prototype.put = function(objName,objValue){
      try{
      if(objValue && objName && objName != ""){
      this.container[objName] = objValue;
      this.length ++ ;
      }
      }catch(e){
      return e;
      }
      };

      HashMap.prototype.get = function(objName){
      try{
      if(this.container[objName])
      return this.container[objName];
      }catch(e){
      return e;
      }
      };

      HashMap.prototype.contain = function(objValue){
      try{
      for(var p in this.container){
      if(this.container[p] === objValue)
      return true;
      }
      return false;
      }catch(e){
      return e;
      }
      };

      HashMap.prototype.remove = function(objName){
      try{
      if(this.container[objName]){
      delete this.container[objName];
      this.length -- ;
      }
      }catch(e){
      return e;
      }
      };

      HashMap.prototype.pop = function(objName){
      try{
      var ov = this.container[objName];
      if(ov){
      delete this.container[objName];
      this.length -- ;
      return ov;
      }
      return null;
      }catch(e){
      return e;
      }
      };

      HashMap.prototype.removeAll = function(){
      try{
      this.clear();
      }catch(e){
      return e;
      }
      };

      HashMap.prototype.clear = function(){
      try{
      delete this.container;
      this.container = {};
      this.length = 0;
      }catch(e){
      return e;
      }
      };

      HashMap.prototype.isEmpty = function(){
      if(this.length === 0)
      return true;
      else
      return false;
      };

      HashMap.prototype.runIn = function(fun){
      try{
      if(!fun)
      throw new Error("未定義處理函數(shù)");
      for(var p in this.container){
      var ov = this.container[p];
      fun(ov);
      }
      }catch(e){
      return e;
      }
      };  回復(fù)  更多評論   
    • # re: 用JS實(shí)現(xiàn)的MAP類
      飛影
      Posted @ 2009-01-14 11:41
      發(fā)現(xiàn)這份代碼被拷貝了好多次啊。
      錯(cuò)也是一樣的拷貝,不知道樓上的有沒有仔細(xì)看過?。?

      if(this.length === 0) 三個(gè)等號。。。。  回復(fù)  更多評論   
    • # 一樓的remove方法有誤,正確的如下
      Xwei
      Posted @ 2009-02-20 16:28
      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.slice(0,i)).concat(this.nodes.slice(i+1,this.nodes.length));
      }else{//刪除的是第一個(gè)元素
      var nodes1=this.nodes.slice(1);
      }
      this.nodes=nodes1;
      break;
      }
      }//remove  回復(fù)  更多評論   
    • # 剛才說錯(cuò)了,應(yīng)該是樓主的remove方法有誤,正確的如下
      Xwei
      Posted @ 2009-02-20 16:29
      Map.prototype.remove1=function(key){//刪除指定值
      for(var i=0;i<this.nodes.length;i++)
      if(this.nodes[i].key==key){
      if(i>0){
      var nodes1=(this.nodes.slice(0,i)).concat(this.nodes.slice(i+1,this.nodes.length));
      }else{//刪除的是第一個(gè)元素
      var nodes1=this.nodes.slice(1);
      }
      this.nodes=nodes1;
      break;
      }
      }//remove  回復(fù)  更多評論   
    • # ...
      Xwei
      Posted @ 2009-02-20 16:30
      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.slice(0,i)).concat(this.nodes.slice(i+1,this.nodes.length));
      }else{//刪除的是第一個(gè)元素
      var nodes1=this.nodes.slice(1);
      }
      this.nodes=nodes1;
      break;
      }
      }//remove  回復(fù)  更多評論   

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
     
    主站蜘蛛池模板: 亚洲精品无码久久久久秋霞| 久久久久免费看黄A片APP| 免费看国产精品麻豆| 亚洲精品人成网线在线播放va | 狠狠躁狠狠爱免费视频无码| 日产乱码一卡二卡三免费| 亚洲AV永久无码精品一福利 | 黄页网站免费观看| 亚洲美女人黄网成人女| 999久久久免费精品播放| 亚洲五月激情综合图片区| 59pao成国产成视频永久免费| 亚洲精品国产手机| 美女视频黄是免费的网址| 亚洲妇女熟BBW| 四虎永久在线精品免费影视| 成年大片免费视频播放一级 | 自怕偷自怕亚洲精品| 最近中文字幕2019高清免费| 精品亚洲AV无码一区二区| 毛片免费在线视频| 色视频在线观看免费| 亚洲精品乱码久久久久久久久久久久 | 亚洲mv国产精品mv日本mv| 国产精品视频免费一区二区 | 国产免费久久精品丫丫| 亚洲国产精品久久久久婷婷软件| 最近中文字幕mv免费高清视频8| 一本天堂ⅴ无码亚洲道久久| www国产亚洲精品久久久日本| www成人免费观看网站| 亚洲国产天堂在线观看| 99视频在线精品免费观看6| 黄色片网站在线免费观看| 狠狠色伊人亚洲综合成人| 女人被男人桶得好爽免费视频| 日本午夜免费福利视频| 全黄大全大色全免费大片| 亚洲国产精品日韩在线| 亚洲第一页日韩专区| 真实国产乱子伦精品免费|