JavaScript:Map使用

定义Map

  1 /**
  2  * Map
  3  * */
  4 function Map() {  
  5     /** 存放键的数组(遍历用到) */  
  6     this.keys = new Array();  
  7     /** 存放数据 */  
  8     this.data = new Object();  
  9       
 10     /** 
 11      * 放入一个键值对 
 12      * @param {String} key 
 13      * @param {Object} value 
 14      */  
 15     this.put = function(key, value) {  
 16         if(this.data[key] == null){  
 17             this.keys.push(key);  
 18         }  
 19         this.data[key] = value;  
 20     };  
 21       
 22     /** 
 23      * 获取某键对应的值 
 24      * @param {String} key 
 25      * @return {Object} value 
 26      */  
 27     this.get = function(key) {  
 28         return this.data[key];  
 29     };  
 30       
 31     /** 
 32      * 删除一个键值对 
 33      * @param {String} key 
 34      */  
 35     this.remove = function(key) {  
 36         this.keys.remove(key);  
 37         this.data[key] = null;  
 38     };  
 39       
 40     /** 
 41      * 遍历Map,执行处理函数 
 42      *  
 43      * @param {Function} 回调函数 function(key,value,index){..} 
 44      */  
 45     this.each = function(fn){  
 46         if(typeof fn != 'function'){  
 47             return;  
 48         }  
 49         var len = this.keys.length;  
 50         for(var i=0;i<len;i++){  
 51             var k = this.keys[i];  
 52             fn(k,this.data[k],i);  
 53         }  
 54     }; 
 55     
 56     /** 
 57      * 遍历Map,执行处理函数,可添加参数 
 58      *  
 59      * @param {Function} 回调函数 function(key,value,index){..} 
 60      */  
 61     this.eachByParam = function(fn,param){  
 62         if(typeof fn != 'function'){  
 63             return;  
 64         }  
 65         var len = this.keys.length;  
 66         for(var i=0;i<len;i++){  
 67             var k = this.keys[i];  
 68             fn(k,this.data[k],i,param);  
 69         }  
 70     }; 
 71       
 72     /** 
 73      * 获取键值数组(类似Java的entrySet()) 
 74      * @return 键值对象{key,value}的数组 
 75      */  
 76     this.entrys = function() {  
 77         var len = this.keys.length;  
 78         var entrys = new Array(len);  
 79         for (var i = 0; i < len; i++) {  
 80             entrys[i] = {  
 81                 key : this.keys[i],  
 82                 value : this.data[i]  
 83             };  
 84         }  
 85         return entrys;  
 86     };  
 87       
 88     /** 
 89      * 判断Map是否为空 
 90      */  
 91     this.isEmpty = function() {  
 92         return this.keys.length == 0;  
 93     };  
 94       
 95     /** 
 96      * 获取键值对数量 
 97      */  
 98     this.size = function(){  
 99         return this.keys.length;  
100     }; 
101       
102     /** 
103      * 重写toString  
104      */  
105     this.toString = function(){  
106         var s = "{";  
107         for(var i=0;i<this.keys.length;i++,s+=','){  
108             var k = this.keys[i];  
109             s += k+"="+this.data[k];  
110         }  
111         s+="}";  
112         return s;  
113     };  
114 }

使用的话

1 var map = new Map();
2 map.xxx

 

posted @ 2016-11-15 19:38  一碗豆浆  阅读(450)  评论(0编辑  收藏  举报