一个简单的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 相关文章推荐
AppBaseJs 类库 网上常用的javascript函数及其他js类库写的
Mar 04 Javascript
javascript实现按回车键切换焦点
Feb 09 Javascript
JavaScript获取URL汇总
Jun 08 Javascript
10个很棒的jQuery代码片段
Sep 24 Javascript
浅析node连接数据库(express+mysql)
Nov 30 Javascript
jQuery实现图片轮播效果代码(基于jquery.pack.js插件)
Jun 02 Javascript
node.js cookie-parser之parser.js
Jun 06 Javascript
AngularJS中关于ng-class指令的几种实现方式详解
Sep 17 Javascript
node thread.sleep实现示例
Jun 20 Javascript
微信小程序返回箭头跳转到指定页面实例解析
Oct 08 Javascript
基于vue的tab-list类目切换商品列表组件的示例代码
Feb 14 Javascript
使用原生JS实现滚轮翻页效果的示例代码
May 31 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 开发环境配置(测试开发环境)
2010/04/28 PHP
一个基于PDO的数据库操作类(新) 一个PDO事务实例
2011/07/03 PHP
php实现下载限制速度示例分享
2014/02/13 PHP
PHP中使用循环实现的金字塔图形
2014/11/08 PHP
apache中为php 设置虚拟目录
2014/12/17 PHP
YII Framework框架教程之国际化实现方法
2016/03/14 PHP
PHP中类属性与类静态变量的访问方法示例
2016/07/13 PHP
JS冒泡事件的快速解决方法
2013/12/16 Javascript
使用upstart把nodejs应用封装为系统服务实例
2014/06/01 NodeJs
JS获取当前日期时间并定时刷新示例
2021/03/04 Javascript
javascript模拟命名空间
2015/04/17 Javascript
js实现支持手机滑动切换的轮播图片效果实例
2015/04/29 Javascript
JS操作XML实例总结(加载与解析XML文件、字符串)
2015/12/08 Javascript
SpringMVC返回json数据的三种方式
2015/12/10 Javascript
Javascript将数字转化成为货币格式字符串
2016/06/22 Javascript
HTML页面,测试JS对C函数的调用简单实例
2016/08/09 Javascript
jQuery复制节点用法示例(clone方法)
2016/09/08 Javascript
详解Bootstrap各式各样的按钮(推荐)
2016/12/13 Javascript
node.js实现复制文本到剪切板的功能
2017/01/23 Javascript
json数据处理及数据绑定
2017/01/25 Javascript
vue 组件的封装之基于axios的ajax请求方法
2018/08/11 Javascript
详解JS实现系统登录页的登录和验证
2019/04/29 Javascript
JS去除字符串最后的逗号实例分析【四种方法】
2019/06/20 Javascript
Python urllib、urllib2、httplib抓取网页代码实例
2015/05/09 Python
Python-OpenCV基本操作方法详解
2018/04/02 Python
安装Pycharm2019以及配置anconda教程的方法步骤
2019/11/11 Python
CSS3实现时间轴特效
2020/11/02 HTML / CSS
moosejaw旗下的户外商品促销网站:Mountain Steals
2017/02/27 全球购物
JSF面试题:如何管量web层中的Bean,用什么标签。如何通过jsp页面与Bean绑定在一起进行处理?
2012/10/05 面试题
英语专业推荐信
2013/11/16 职场文书
运动会解说词100字
2014/01/31 职场文书
节约用水演讲稿
2014/05/21 职场文书
共产党员公开承诺践诺书
2014/05/28 职场文书
竞选班干部演讲稿100字
2014/08/20 职场文书
水浒传读书笔记
2015/06/25 职场文书
MySQL深分页问题解决思路
2022/12/24 MySQL