一个简单的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 相关文章推荐
form中限制文本字节数js代码
Jun 10 Javascript
JS的事件绑定深入认识
Jun 26 Javascript
使用命令对象代替switch语句的写法示例
Feb 28 Javascript
JS实现新浪微博效果带遮罩层的弹出框代码
Oct 12 Javascript
jQuery实现的调整表格行tr上下顺序
Jan 10 Javascript
JavaScript中闭包之浅析解读(必看篇)
Aug 25 Javascript
BootStrap中按钮点击后被禁用按钮的最佳实现方法
Sep 23 Javascript
解决Vue axios post请求,后台获取不到数据的问题方法
Aug 11 Javascript
vuejs2.0运用原生js实现简单拖拽元素功能
Aug 21 Javascript
jquery实现掷骰子小游戏
Oct 24 jQuery
js中位数不足自动补位扩展padLeft、padRight实现代码
Apr 06 Javascript
vue iview 隐藏Table组件里的某一列操作
Nov 13 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下网站防IP攻击代码,超级实用
2010/10/24 PHP
PHP5中虚函数的实现方法分享
2011/04/20 PHP
php中的boolean(布尔)类型详解
2013/10/28 PHP
php将html转成wml的WAP标记语言实例
2015/07/08 PHP
php中文乱码问题的终极解决方案汇总
2017/08/01 PHP
js截取函数(indexOf,join等)
2010/09/01 Javascript
node.js 一个简单的页面输出实现代码
2012/03/07 Javascript
js中的for如何实现foreach中的遍历
2014/05/31 Javascript
jquery实现标题字体变换的滑动门菜单效果
2015/09/07 Javascript
JS实现复制内容到剪贴板功能兼容所有浏览器(推荐)
2016/06/17 Javascript
JSON与XML的区别对比及案例应用
2016/11/11 Javascript
详解Angular的数据显示优化处理
2016/12/26 Javascript
Bootstrap布局之栅格系统学习笔记
2017/05/04 Javascript
vue-next/runtime-core 源码阅读指南详解
2019/10/25 Javascript
vue使用video插件vue-video-player详解
2020/10/23 Javascript
python实现zencart产品数据导入到magento(python导入数据)
2014/04/03 Python
编写Python脚本来获取mp3文件tag信息的教程
2015/05/04 Python
python实现在图片上画特定大小角度矩形框
2018/10/24 Python
python3 爬取图片的实例代码
2018/11/06 Python
Django基础知识 web框架的本质详解
2019/07/18 Python
Python中pymysql 模块的使用详解
2019/08/12 Python
python实现批量修改服务器密码的方法
2019/08/13 Python
Python实现一个简单的递归下降分析器
2020/08/01 Python
Python中pass的作用与使用教程
2020/11/13 Python
在canvas上实现元素图片镜像翻转动画效果的方法
2018/03/20 HTML / CSS
墨西哥网上超市:Superama
2018/07/10 全球购物
巴西一家专门从事家居和装饰的连锁店:Camicado
2019/08/14 全球购物
工业设计专业个人求职信范文
2013/12/28 职场文书
初中校园之声广播稿
2014/01/15 职场文书
《两个铁球同时着地》教学反思
2014/02/13 职场文书
国培远程培训感言
2014/03/08 职场文书
2014年科技工作总结
2014/11/26 职场文书
导游词开场白
2015/01/31 职场文书
情况说明书格式及范文
2019/06/24 职场文书
导游词之泰山玉皇顶
2019/12/23 职场文书
python分分钟绘制精美地图海报
2022/02/15 Python