首页 > 编程 > JavaScript > 正文

JavaScript中实现Map的示例代码

2019-11-20 11:35:30
字体:
来源:转载
供稿:网友

不废话了,直接贴代码了。

代码一:

var map=new Map();map.put("a","A");map.put("b","B");map.put("c","C");map.get("a"); //返回:Amap.entrySet() // 返回Entity[{key,value},{key,value}]map.containsKey('kevin') //返回:false
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;     }else{       this.data[key]=this.data[key];     }     return true;   };   /**    * 获取某键对应的值    * @param {String} key    * @return {Object} value    */   this.get = function(key) {     return this.data[key];   };   /**    * 删除一个键值对    * @param {String} key    */   this.remove = function(key) {     for(var i=0;i<this.keys.length;i++){       if(key===this.keys[i]){         var del_keys= this.keys.splice(i,1);         for(k in del_keys){           this.data[k] = null;         }         return true;       }     }     return false;   };   /**    * 遍历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);     }   };   /**    * 获取键值数组    * @return entity[{key,value},{key,value}]    */   this.entrySet = 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[this.keys[i]]       };     }     return entrys;   };   /**    * 判断Map是否为空    */   this.isEmpty = function() {     return this.keys.length == 0;   };   /**    * 获取键值对数量    */   this.size = function(){     return this.keys.length;   };   this.containsKey=function(key){     return this.keys.filter(function(v){       if(v===key){         return key;       }     }).length>0;   };   /**    * 重写toString    */   this.toString = function(){     var s = "{";     for(var i=0;i<this.keys.length;i++){       var k = this.keys[i];       s += k+"="+this.data[k];       if(this.keys.length>i+1){         s+=','       }     }     s+="}";     return s;   };   /**    * 解析字符串到Map    * {a=A,b=B,c=B,}    */   this.parserStringAndAddMap=function(str){     var count=0;     if(str && str.length>0){       str=str.trim();       var startIndex=str.indexOf("{"),endIndex=str.lastIndexOf("}");       if(startIndex!==-1 && endIndex!==-1){         str=str.substring(startIndex+1,endIndex);         var arrs= str.split(",");         for(var i=0;i<arrs.length;i++){           var kv=arrs[i].trim();           if(kv.length>0 && kv.indexOf("=")!==-1){             var kv_arr=kv.split("=");             if(kv_arr.length==2){               if(this.put(kv_arr[0].trim(),kv_arr[1].trim())){                 count++;               }else{                 console.error('error: kv:'+kv);               }             }           }         }       }else{         console.log("data error:"+str);       }     }else{       console.log('data is not empty');     }     return count;   }; } 

代码二:

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);}

以上内容通过两段代码给大家分享了JavaScript中实现Map,希望大家喜欢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表