JS中的Map基本操作

来源:互联网 发布:微信生成器软件 编辑:程序博客网 时间:2024/05/23 13:05
Array.prototype.remove = function(s) {       for (var i = 0; i < this.length; i++) {           if (s == this[i])               this.splice(i, 1);       }   }     /**   * Simple Map   *    *    * var m = new Map();   * m.put('key','value');   * ...   * var s = "";   * m.each(function(key,value,index){   *      s += index+":"+ key+"="+value+"/n";   * });   * alert(s);   *    * @author dewitt   * @date 2008-05-24   */  function Map() {       /** 存放键的数组(遍历用到) */      this.keys = new Array();       /** 存放数据 */      this.data = new Object();              /**       * 放入一个键值对       * @param {String} key       * @param {Object} value       */      this.put = function(key, value) {           if(this.data[key] == null){               this.keys.push(key);           }           this.data[key] = value;       };              /**       * 获取某键对应的值       * @param {String} key       * @return {Object} value       */      this.get = function(key) {           return this.data[key];       };              /**       * 删除一个键值对       * @param {String} key       */      this.remove = function(key) {           this.keys.remove(key);           this.data[key] = null;       };              /**       * 遍历Map,执行处理函数       *        * @param {Function} 回调函数 function(key,value,index){..}       */      this.each = function(fn){           if(typeof fn != 'function'){               return;           }           var len = this.keys.length;           for(var i=0;i<len;i++){               var k = this.keys[i];               fn(k,this.data[k],i);           }       };              /**       * 获取键值数组(类似Java的entrySet())       * @return 键值对象{key,value}的数组       */      this.entrys = function() {           var len = this.keys.length;           var entrys = new Array(len);           for (var i = 0; i < len; i++) {               entrys[i] = {                   key : this.keys[i],                   value : this.data[i]               };           }           return entrys;       };              /**       * 判断Map是否为空       */      this.isEmpty = function() {           return this.keys.length == 0;       };              /**       * 获取键值对数量       */      this.size = function(){           return this.keys.length;       };              /**       * 重写toString        */      this.toString = function(){           var s = "{";           for(var i=0;i<this.keys.length;i++,s+=','){               var k = this.keys[i];               s += k+"="+this.data[k];           }           s+="}";           return s;       };   }       function testMap(){       var m = new Map();       m.put('key1','Comtop');       m.put('key2','南方电网');       m.put('key3','景新花园');       alert("init:"+m);              m.put('key1','康拓普');       alert("set key1:"+m);              m.remove("key2");       alert("remove key2: "+m);              var s ="";       m.each(function(key,value,index){           s += index+":"+ key+"="+value+"/n";       });       alert(s);   }  

0 0