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


Posted in Javascript onAugust 03, 2016

用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实例(分享)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
setInterval 和 setTimeout会产生内存溢出
Feb 15 Javascript
基于jQuery的消息提示插件 DivAlert之旅(二)
Apr 01 Javascript
JavaScript入门之对象与JSON详解
Oct 21 Javascript
javascript 日期时间 转换的方法
Feb 21 Javascript
jQuery动态改变图片显示大小(修改版)的实现思路及代码
Dec 24 Javascript
js脚本获取webform服务器控件的方法
May 16 Javascript
jquery实现动画菜单的左右滚动、渐变及图形背景滚动等效果
Aug 25 Javascript
JavaScript实现获取某个元素相邻兄弟节点的prev与next方法
Jan 25 Javascript
JS通过Cookie判断页面是否为首次打开
Feb 05 Javascript
JavaScript编写的网页小游戏,很给力
Aug 18 Javascript
Vue CLI3 开启gzip压缩文件的方式
Sep 30 Javascript
JS实现灯泡开关特效
Mar 30 Javascript
AngularJS教程 ng-style 指令简单示例
Aug 03 #Javascript
js判断数组key是否存在(不用循环)的简单实例
Aug 03 #Javascript
JavaScript将DOM事件处理程序封装为event.js 出现的低级错误问题
Aug 03 #Javascript
AngularJS基础 ng-srcset 指令简单示例
Aug 03 #Javascript
js删除Array数组中指定元素的两种方法
Aug 03 #Javascript
AngularJS基础 ng-src 指令简单示例
Aug 03 #Javascript
JS在Chrome浏览器中showModalDialog函数返回值为undefined的解决方法
Aug 03 #Javascript
You might like
一个高ai的分页函数和一个url函数
2006/10/09 PHP
PHP array操作10个小技巧分享
2011/06/23 PHP
ThinkPHP中数据操作案例分析
2015/09/27 PHP
thinkphp5.0整合phpsocketio完整攻略(绕坑)
2018/10/12 PHP
Javascript调试工具(下载)
2007/01/09 Javascript
用js实现下载远程文件并保存在本地的脚本
2008/05/06 Javascript
jquery ajax post提交数据乱码
2013/11/05 Javascript
JS实现点击链接取消跳转效果的方法
2014/01/24 Javascript
javascript学习笔记(七)Ajax和Http状态码
2014/10/08 Javascript
JS实现CheckBox复选框全选全不选功能
2015/05/06 Javascript
关于cookie的初识和运用(js和jq)
2016/04/07 Javascript
jquery插件Jplayer使用方法简析
2016/04/22 Javascript
js实现可旋转的立方体模型
2016/10/16 Javascript
Bootstrap 模态框实例插件案例分析
2016/12/28 Javascript
jQuery实现的页面弹幕效果【测试可用】
2018/08/17 jQuery
nodejs aes 加解密实例
2018/10/10 NodeJs
js打开word文档预览操作示例【不是下载】
2019/05/23 Javascript
layui当点击文本框时弹出选择框,显示选择内容的例子
2019/09/02 Javascript
vue实现列表滚动的过渡动画
2020/06/29 Javascript
Python基于checksum计算文件是否相同的方法
2015/07/09 Python
Python 中urls.py:URL dispatcher(路由配置文件)详解
2017/03/24 Python
在python中实现对list求和及求积
2018/11/14 Python
python实现简易学生信息管理系统
2020/04/05 Python
Python和Sublime整合过程图示
2019/12/25 Python
Python Numpy,mask图像的生成详解
2020/02/19 Python
使用python脚本自动生成K8S-YAML的方法示例
2020/07/12 Python
捷克厨房用品购物网站:Tescoma
2018/07/13 全球购物
护士实习鉴定范文
2013/12/22 职场文书
秘书专业自荐信范文
2013/12/26 职场文书
校运会广播稿100字
2014/01/27 职场文书
保护环境建议书100字
2014/05/13 职场文书
趣味运动会策划方案
2014/06/02 职场文书
信息简报范文
2015/07/21 职场文书
《水上飞机》教学反思
2016/02/20 职场文书
教你怎么用python实现字符串转日期
2021/05/24 Python
mongodb数据库迁移变更的解决方案
2021/09/04 MongoDB