一个简单的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 相关文章推荐
一些常用的Javascript函数
Dec 22 Javascript
javascript和jquery修改a标签的href属性
Dec 16 Javascript
js实现简单div拖拽功能实例
May 12 Javascript
jQuery实现的多滑动门,多选项卡效果代码
Mar 28 Javascript
jQuery实现的购物车物品数量加减功能代码
Nov 16 Javascript
深入理解jQuery()方法的构建原理
Dec 05 Javascript
jQuery插件echarts实现的多柱子柱状图效果示例【附demo源码下载】
Mar 04 Javascript
解决webpack -p压缩打包react报语法错误的方法
Jul 03 Javascript
微信小程序之swiper轮播图中的图片自适应高度的方法
Apr 23 Javascript
vant(ZanUi)结合async-validator实现表单验证的方法
Dec 06 Javascript
JavaScript链式调用原理与实现方法详解
May 16 Javascript
谈谈JavaScript中的函数
Sep 08 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 ADODB使用方法集锦
2008/03/25 PHP
php array的学习笔记
2012/05/16 PHP
PHP curl伪造IP地址和header信息代码实例
2015/04/27 PHP
ThinkPHP中使用Ueditor富文本编辑器
2015/09/02 PHP
Thinkphp单字母函数使用指南
2016/05/08 PHP
程序员的表白神器“520”大声喊出来
2016/05/20 PHP
使用PHP+MySql实现微信投票功能实例代码
2017/09/29 PHP
JS中Iframe之间传值及子页面与父页面应用
2013/03/11 Javascript
js 字符串转换成数字的三种方法
2013/03/23 Javascript
JavaScript检查某个function是否是原生代码的方法
2014/08/20 Javascript
jQuery的ajax和遍历数组json实例代码
2016/08/01 Javascript
详解Vue路由钩子及应用场景(小结)
2017/11/07 Javascript
NodeJS爬虫实例之糗事百科
2017/12/14 NodeJs
JavaScript通过mouseover()实现图片变大效果的示例
2017/12/20 Javascript
JS中的回调函数实例浅析
2018/03/21 Javascript
vue-cli项目优化方法- 缩短首屏加载时间
2018/04/01 Javascript
Vue引入jquery实现平滑滚动到指定位置
2018/05/09 jQuery
详解Element 指令clickoutside源码分析
2019/02/15 Javascript
分享Angular http interceptors 拦截器使用(推荐)
2019/11/10 Javascript
微信小程序如何加载数据库真实数据的实现
2020/03/04 Javascript
Python3 Tkinter选择路径功能的实现方法
2019/06/14 Python
python如何实现代码检查
2019/06/28 Python
Python 3 实现定义跨模块的全局变量和使用教程
2019/07/07 Python
浅谈django 模型类使用save()方法的好处与注意事项
2020/03/28 Python
python+requests接口压力测试500次,查看响应时间的实例
2020/04/30 Python
python的Jenkins接口调用方式
2020/05/12 Python
如何进行Linux分区优化
2013/02/12 面试题
教育技术学专业职业规划书
2014/03/03 职场文书
项目经理任命书内容
2014/06/06 职场文书
新闻发布会策划方案
2014/06/12 职场文书
药品营销专业毕业生自荐信
2014/07/02 职场文书
建筑节能汇报材料
2014/08/22 职场文书
学校三八妇女节活动总结
2015/02/06 职场文书
2016年毕业实习心得体会范文
2015/10/09 职场文书
正确使用MySQL INSERT INTO语句
2021/05/26 MySQL
vue特效之翻牌动画
2022/04/20 Vue.js