不废话了,直接贴代码了。
代码一: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") //返回:falsefunction 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+"
"; * }); * 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+"
";});alert(s);}以上内容通过两段代码给大家分享了JavaScript中实现Map,希望大家喜欢。