一个简单的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 相关文章推荐
JQuery Tips(2) 关于$()包装集你不知道的
Dec 14 Javascript
jquery 图片 上一张 下一张 链接效果(续篇)
Apr 20 Javascript
基于Unit PNG Fix.js有时候在ie6下不正常的解决办法
Jun 26 Javascript
js showModalDialog 弹出对话框的简单实例(子窗体)
Jan 07 Javascript
容易造成JavaScript内存泄露几个方面
Sep 04 Javascript
JavaScript实现弹出子窗口并传值给父窗口
Dec 18 Javascript
javascript数组排序汇总
Jul 07 Javascript
js实现接收表单的值并将值拼在表单action后面的方法
Nov 23 Javascript
jQuery中的一些常见方法小结(推荐)
Jun 13 Javascript
JavaScript实现二叉树定义、遍历及查找的方法详解
Dec 20 Javascript
Vue 过滤器filters及基本用法
Dec 26 Javascript
vue 自定义 select内置组件
Apr 10 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
php之对抗Web扫描器的脚本技巧
2008/10/01 PHP
PHP 面向对象 final类与final方法
2010/05/05 PHP
PHP二维数组的去重问题解析
2011/07/17 PHP
PHP的简易冒泡法代码分享
2012/08/28 PHP
PHP载入图像imagecreatefrom_gif_jpeg_png系列函数用法分析
2016/11/14 PHP
php简单随机字符串生成方法示例
2017/04/19 PHP
javascript 选择文件夹对话框(web)
2009/07/07 Javascript
javascript使用定时函数实现跳转到某个页面
2013/12/25 Javascript
js设置控件的隐藏与显示的两种方法
2014/08/21 Javascript
用js通过url传参把数据从一个页面传到另一个页面
2014/09/01 Javascript
node.js中的fs.fstatSync方法使用说明
2014/12/15 Javascript
jquery中one()方法的用法实例
2015/01/16 Javascript
JavaScript中的数据类型转换方法小结
2015/10/26 Javascript
两种js监听滚轮事件的实现方法
2016/05/13 Javascript
AngularJS指令中的绑定策略实例分析
2016/12/14 Javascript
React-Native中props具体使用详解
2017/09/04 Javascript
ExtJs使用自定义插件动态保存表头配置(隐藏或显示)
2018/09/25 Javascript
NodeJS搭建HTTP服务器的实现步骤
2018/10/12 NodeJs
node和vue实现商城用户地址模块
2018/12/05 Javascript
vue的keep-alive用法技巧
2019/08/15 Javascript
layui表格数据复选框回显设置方法
2019/09/13 Javascript
HTML+JavaScript实现扫雷小游戏
2019/09/30 Javascript
vue-cli 3如何使用vue-bootstrap-datetimepicker日期插件
2021/02/20 Vue.js
pandas object格式转float64格式的方法
2018/04/10 Python
Selenium元素的常用操作方法分析
2018/08/10 Python
Python+pyplot绘制带文本标注的柱状图方法
2019/07/08 Python
Linux下升级安装python3.8并配置pip及yum的教程
2020/01/02 Python
python编写softmax函数、交叉熵函数实例
2020/06/11 Python
Python绘图之柱形图绘制详解
2020/07/28 Python
python元组拆包实现方法
2021/02/28 Python
DIY手工制作经营店创业计划书
2014/02/01 职场文书
酒店端午节活动方案
2014/08/26 职场文书
优秀党员申报材料
2014/12/18 职场文书
mysql优化之query_cache_limit参数说明
2021/07/01 MySQL
Python if else条件语句形式详解
2022/03/24 Python
Win11 Dev 预览版25174.1000发布 (附更新修复内容汇总)
2022/08/05 数码科技