JavaScript创建Map对象(转)

JavaScript 里面本身没有map对象,用JavaScript的Array来实现Map的数据结构。

 

Js代码  收藏代码
  1. /*   
  2.  * MAP对象,实现MAP功能   
  3.  *   
  4.  * 接口:   
  5.  * size()     获取MAP元素个数   
  6.  * isEmpty()    判断MAP是否为空   
  7.  * clear()     删除MAP所有元素   
  8.  * put(key, value)   向MAP中增加元素(key, value)    
  9.  * remove(key)    删除指定KEY的元素,成功返回True,失败返回False   
  10.  * get(key)    获取指定KEY的元素值VALUE,失败返回NULL   
  11.  * element(index)   获取指定索引的元素(使用element.key,element.value获取KEY和VALUE),失败返回NULL   
  12.  * containsKey(key)  判断MAP中是否含有指定KEY的元素   
  13.  * containsValue(value) 判断MAP中是否含有指定VALUE的元素   
  14.  * values()    获取MAP中所有VALUE的数组(ARRAY)   
  15.  * keys()     获取MAP中所有KEY的数组(ARRAY)   
  16.  *   
  17.  * 例子:   
  18.  * var map = new Map();   
  19.  *   
  20.  * map.put("key", "value");   
  21.  * var val = map.get("key")   
  22.  * ……   
  23.  *   
  24.  */     
  25. function Map() {     
  26.     this.elements = new Array();     
  27.        
  28.     //获取MAP元素个数     
  29.     this.size = function() {     
  30.         return this.elements.length;     
  31.     }     
  32.        
  33.     //判断MAP是否为空     
  34.     this.isEmpty = function() {     
  35.         return(this.elements.length < 1);     
  36.     }     
  37.        
  38.     //删除MAP所有元素     
  39.     this.clear = function() {     
  40.         this.elements = new Array();     
  41.     }     
  42.        
  43.     //向MAP中增加元素(key, value)      
  44.     this.put = function(_key, _value) {     
  45.         this.elements.push( {     
  46.             key : _key,     
  47.             value : _value     
  48.         });     
  49.     }     
  50.        
  51.     //删除指定KEY的元素,成功返回True,失败返回False     
  52.     this.remove = function(_key) {     
  53.         var bln = false;     
  54.         try{     
  55.             for(i = 0; i < this.elements.length; i++) {     
  56.                 if(this.elements[i].key == _key) {     
  57.                     this.elements.splice(i, 1);     
  58.                     return true;     
  59.                 }     
  60.             }     
  61.         } catch(e) {     
  62.             bln = false;     
  63.         }     
  64.         return bln;     
  65.     }     
  66.        
  67.     //获取指定KEY的元素值VALUE,失败返回NULL     
  68.     this.get = function(_key) {     
  69.         try{     
  70.             for(i = 0; i < this.elements.length; i++) {     
  71.                 if(this.elements[i].key == _key) {     
  72.                     return this.elements[i].value;     
  73.                 }     
  74.             }     
  75.         } catch(e) {     
  76.             return null;     
  77.         }     
  78.     }     
  79.        
  80.     //获取指定索引的元素(使用element.key,element.value获取KEY和VALUE),失败返回NULL     
  81.     this.element = function(_index) {     
  82.         if(_index < 0 || _index >= this.elements.length) {     
  83.             return null;     
  84.         }     
  85.         return this.elements[_index];     
  86.     }     
  87.        
  88.     //判断MAP中是否含有指定KEY的元素     
  89.     this.containsKey = function(_key) {     
  90.         varbln = false;     
  91.         try{     
  92.             for(i = 0; i < this.elements.length; i++) {     
  93.                 if(this.elements[i].key == _key) {     
  94.                     bln = true;     
  95.                 }     
  96.             }     
  97.         } catch(e) {     
  98.             bln = false;     
  99.         }     
  100.         return bln;     
  101.     }     
  102.        
  103.     //判断MAP中是否含有指定VALUE的元素     
  104.     this.containsValue = function(_value) {     
  105.         var bln = false;     
  106.         try{     
  107.             for(i = 0; i < this.elements.length; i++) {     
  108.                 if(this.elements[i].value == _value) {     
  109.                     bln = true;     
  110.                 }     
  111.             }     
  112.         } catch(e) {     
  113.             bln = false;     
  114.         }     
  115.         return bln;     
  116.     }     
  117.        
  118.     //获取MAP中所有VALUE的数组(ARRAY)     
  119.     this.values = function() {     
  120.         var arr = new Array();     
  121.         for(i = 0; i < this.elements.length; i++) {     
  122.             arr.push(this.elements[i].value);     
  123.         }     
  124.         return arr;     
  125.     }     
  126.        
  127.     //获取MAP中所有KEY的数组(ARRAY)     
  128.     this.keys = function() {     
  129.         var arr = new Array();     
  130.         for(i = 0; i < this.elements.length; i++) {     
  131.             arr.push(this.elements[i].key);     
  132.         }     
  133.         return arr;     
  134.     }     
  135. }     
  136.   
  137.   var map = new Map();    
  138.      
  139.   map.put("key1", "value1");    
  140.   map.put("key2", "value2");    
  141.   map.put("key3", "value3");    
  142.   
  143.     
  144.   //var val = map.get("key1");  
  145. //  var val = map.containsKey("key1");  
  146. //  var val = map.element(2).value;  
  147.   
  148.     var arr=map.keys();  
  149.     for(var i=0;i<arr.length;i++){  
  150.         alert(map.get(arr[i]));  
  151.     }  
  152. //  alert(val);  
posted @ 2014-07-07 17:12  技术狂  阅读(2655)  评论(1编辑  收藏  举报