敬的世界

常用链接

统计

最新评论

MAP IN JS

  1. source page :   http://www.iteye.com/topic/196610
  2. Array.prototype.remove =  function (s) {   
  3.      for  ( var  i = 0; i <  this .length; i++) {   
  4.          if  (s ==  this [i])   
  5.              this .splice(i, 1);   
  6.     }   
  7. }   
  8.   
  9. /**  
  10.  * Simple Map  
  11.  *   
  12.  *   
  13.  * var m = new Map();  
  14.  * m.put('key','value');  
  15.  * ...  
  16.  * var s = "";  
  17.  * m.each(function(key,value,index){  
  18.  *      s += index+":"+ key+"="+value+"\n";  
  19.  * });  
  20.  * alert(s);  
  21.  *   
  22.  * @author dewitt  
  23.  * @date 2008-05-24  
  24.  */   
  25. function  Map() {   
  26.      /** 存放键的数组(遍历用到) */   
  27.      this .keys =  new  Array();   
  28.      /** 存放数据 */   
  29.      this .data =  new  Object();   
  30.        
  31.      /**  
  32.      * 放入一个键值对  
  33.      * @param {String} key  
  34.      * @param {Object} value  
  35.      */   
  36.      this .put =  function (key, value) {   
  37.          if ( this .data[key] ==  null ){   
  38.              this .keys.push(key);   
  39.         }   
  40.          this .data[key] = value;   
  41.     };   
  42.        
  43.      /**  
  44.      * 获取某键对应的值  
  45.      * @param {String} key  
  46.      * @return {Object} value  
  47.      */   
  48.      this .get =  function (key) {   
  49.          return   this .data[key];   
  50.     };   
  51.        
  52.      /**  
  53.      * 删除一个键值对  
  54.      * @param {String} key  
  55.      */   
  56.      this .remove =  function (key) {   
  57.          this .keys.remove(key);   
  58.          this .data[key] =  null ;   
  59.     };   
  60.        
  61.      /**  
  62.      * 遍历Map,执行处理函数  
  63.      *   
  64.      * @param {Function} 回调函数 function(key,value,index){..}  
  65.      */   
  66.      this .each =  function (fn){   
  67.          if ( typeof  fn !=  'function' ){   
  68.              return ;   
  69.         }   
  70.          var  len =  this .keys.length;   
  71.          for ( var  i=0;i<len;i++){   
  72.              var  k =  this .keys[i];   
  73.             fn(k, this .data[k],i);   
  74.         }   
  75.     };   
  76.        
  77.      /**  
  78.      * 获取键值数组(类似Java的entrySet())  
  79.      * @return 键值对象{key,value}的数组  
  80.      */   
  81.      this .entrys =  function () {   
  82.          var  len =  this .keys.length;   
  83.          var  entrys =  new  Array(len);   
  84.          for  ( var  i = 0; i < len; i++) {   
  85.             entrys[i] = {   
  86.                 key :  this .keys[i],   
  87.                 value :  this .data[i]   
  88.             };   
  89.         }   
  90.          return  entrys;   
  91.     };   
  92.        
  93.      /**  
  94.      * 判断Map是否为空  
  95.      */   
  96.      this .isEmpty =  function () {   
  97.          return   this .keys.length == 0;   
  98.     };   
  99.        
  100.      /**  
  101.      * 获取键值对数量  
  102.      */   
  103.      this .size =  function (){   
  104.          return   this .keys.length;   
  105.     };   
  106.        
  107.      /**  
  108.      * 重写toString   
  109.      */   
  110.      this .toString =  function (){   
  111.          var  s =  "{" ;   
  112.          for ( var  i=0;i< this .keys.length;i++,s+= ',' ){   
  113.              var  k =  this .keys[i];   
  114.             s += k+ "=" + this .data[k];   
  115.         }   
  116.         s+= "}" ;   
  117.          return  s;   
  118.     };   
  119. }   
  120.   
  121.   
  122. function  testMap(){   
  123.      var  m =  new  Map();   
  124.     m.put( 'key1' , 'Comtop' );   
  125.     m.put( 'key2' , '南方电网' );   
  126.     m.put( 'key3' , '景新花园' );   
  127.     alert( "init:" +m);   
  128.        
  129.     m.put( 'key1' , '康拓普' );   
  130.     alert( "set key1:" +m);   
  131.        
  132.     m.remove( "key2" );   
  133.     alert( "remove key2: " +m);   
  134.        
  135.      var  s = "" ;   
  136.     m.each( function (key,value,index){   
  137.         s += index+ ":" + key+ "=" +value+ "\n" ;   
  138.     });   
  139.     alert(s);   
  140. }  

 //testMap.htm

Html代码 复制代码 收藏代码
  1. < html >   
  2. < head >   
  3. < title > Test Map </ title >   
  4. < script   language = "javascript"   src = "map.js" >   
  5. </ script >   
  6. </ head >   
  7. < body >   
  8. < input   type = "button"   value = "test"   onclick = "testMap()" >   
  9. </ body >   
  10. </ html >  

posted on 2011-08-05 17:16 picture talk 阅读(206) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航: