首页 > 编程 > JavaScript > 正文

一个简单的JavaScript Map实例(分享)

2019-11-20 09:19:16
字体:
来源:转载
供稿:网友

用js写了一个Map,带遍历功能,请大家点评下啦。

//map.js

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); }   //testMap.htm?<html> <head> <title>Test Map</title> <script language="javascript" src="map.js"> </script> </head> <body> <input type="button" value="test" onclick="testMap()"> </body> </html> 

以上这篇一个简单的JavaScript Map实例(分享)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持武林网。

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