一个简单的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中的property和attribute介绍
Dec 26 Javascript
JavaScript通过this变量快速找出用户选中radio按钮的方法
Mar 23 Javascript
jquery实现通用的内容渐显Tab选项卡效果
Sep 07 Javascript
谈谈对JavaScript原生拖放的深入理解
Sep 20 Javascript
完美解决js传递参数中加号和&amp;号自动改变的方法
Oct 11 Javascript
jQuery序列化后的表单值转换成Json
Jun 16 jQuery
vue 注册组件的使用详解
May 05 Javascript
浅谈React的最大亮点之虚拟DOM
May 29 Javascript
vue给组件传递不同的值方法
Sep 29 Javascript
vue给对象动态添加属性和值的实例
Sep 09 Javascript
JS实现表单中点击小眼睛显示隐藏密码框中的密码
Apr 13 Javascript
jQuery--遍历操作实例小结【后代、同胞及过滤】
May 22 jQuery
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
咖啡的传说和历史
2021/03/03 新手入门
PHP的面向对象编程
2006/10/09 PHP
PHP合并两个数组的两种方式的异同
2012/09/14 PHP
Laravel项目中timeAgo字段语言转换的改善方法示例
2019/09/16 PHP
Display SQL Server Login Mode
2007/06/21 Javascript
用jquery实现的模拟QQ邮箱里的收件人选取及其他效果(一)
2011/01/06 Javascript
自定义一个jquery插件[鼠标悬浮时候 出现说明label]
2011/06/27 Javascript
javascript对话框使用方法(警告框 javascript确认框 提示框)
2014/01/07 Javascript
文本框水印提示效果的简单实现代码
2014/02/22 Javascript
Javascript设计模式理论与编程实战之简单工厂模式
2015/11/03 Javascript
基于jQuery实现复选框是否选中进行答题提示
2015/12/10 Javascript
深入理解JS实现快速排序和去重
2016/10/17 Javascript
js浏览器滚动条卷去的高度scrolltop(实例讲解)
2017/07/07 Javascript
Vue.js结合Ueditor富文本编辑器的实例代码
2017/07/11 Javascript
AngularJS service之select下拉菜单效果
2017/07/28 Javascript
AngularJS通过ng-Img-Crop实现头像截取的示例
2017/08/17 Javascript
Vue框架里使用Swiper的方法示例
2018/09/20 Javascript
JavaScript实现指定数量的并发限制的示例代码
2020/03/10 Javascript
如何在node环境实现“get数据解析”代码实例
2020/07/03 Javascript
11个Javascript小技巧帮你提升代码质量(小结)
2020/12/28 Javascript
Python使用Scrapy爬取妹子图
2015/05/28 Python
python实现可以断点续传和并发的ftp程序
2016/09/13 Python
Python实现查找匹配项作处理后再替换回去的方法
2017/06/10 Python
django初始化数据库的实例
2018/05/27 Python
Gauss-Seidel迭代算法的Python实现详解
2019/06/29 Python
python3.7.3版本和django2.2.3版本是否可以兼容
2020/09/01 Python
python 利用jieba.analyse进行 关键词提取
2020/12/17 Python
Pytorch - TORCH.NN.INIT 参数初始化的操作
2021/02/27 Python
HTML5标签使用方法详解
2015/11/27 HTML / CSS
中专生自我鉴定书范文
2013/12/28 职场文书
红旗方阵解说词
2014/02/12 职场文书
教师教学评估方案
2014/05/09 职场文书
成品仓管员岗位职责
2015/04/01 职场文书
刑事附带民事上诉状
2015/05/23 职场文书
比赛主持人开场白
2015/05/29 职场文书
浅谈Mysql多表连接查询的执行细节
2021/04/24 MySQL