一个简单的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 学习笔记 Black.Caffeine 09.11.28
Nov 30 Javascript
IE下使用cloneNode注意事项分享
Nov 22 Javascript
网站繁简切换的JS遇到页面卡死的解决方法
Mar 12 Javascript
ExtJS中设置下拉列表框不可编辑的方法
May 07 Javascript
DOM操作一些常用的属性汇总
Mar 13 Javascript
纯javascript制作日历控件
Jul 17 Javascript
JS+CSS实现仿雅虎另类滑动门切换效果
Oct 13 Javascript
JS实现不使用图片仿Windows右键菜单效果代码
Oct 22 Javascript
EasyUI的DataGrid每行数据添加操作按钮的实现代码
Aug 22 Javascript
vue.js默认路由不加载linkActiveClass问题的解决方法
Dec 11 Javascript
基于Vue的SPA动态修改页面title的方法(推荐)
Jan 02 Javascript
AngularJS监听ng-repeat渲染完成的方法
Mar 20 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
当海贼王变成JOJO风
2020/03/02 日漫
php中的登陆login
2007/01/18 PHP
php多功能图片处理类分享(php图片缩放类)
2014/03/14 PHP
php仿微信红包分配算法的实现方法
2016/05/13 PHP
js innerHTML 改变div内容的方法
2013/08/03 Javascript
解决css和js的{}与smarty定界符冲突问题的两种方法
2013/09/10 Javascript
js根据日期判断星座的示例代码
2014/01/23 Javascript
jQuery实现当按下回车键时绑定点击事件
2014/01/28 Javascript
深入理解Javascript里的依赖注入
2014/03/19 Javascript
JavaScript中判断页面关闭、页面刷新的实现代码
2014/08/27 Javascript
js字符串截取函数slice、substring和substr的比较
2016/05/17 Javascript
利用JavaScript阻止表单提交的两种方法
2016/08/11 Javascript
使用jQuery.Qrcode插件在客户端动态生成二维码并添加自定义Logo
2016/09/01 Javascript
js实现的xml对象转json功能示例
2016/12/24 Javascript
微信小程序 登录实例详解
2017/01/16 Javascript
vue父组件中获取子组件中的数据(实例讲解)
2017/09/27 Javascript
详解基于Vue cli生成的Vue项目的webpack4升级
2018/06/19 Javascript
Vuex的API文档说明详解
2020/02/05 Javascript
JS禁用右键、禁用Ctrl+u、禁用Ctrl+s、禁用F12的实现代码
2020/12/01 Javascript
Python中的迭代器与生成器高级用法解析
2016/06/28 Python
Django原生sql也能使用Paginator分页的示例代码
2017/11/15 Python
python3读取excel文件只提取某些行某些列的值方法
2018/07/10 Python
零基础使用Python读写处理Excel表格的方法
2019/05/02 Python
python使用sessions模拟登录淘宝的方式
2019/08/16 Python
Python 经典算法100及解析(小结)
2019/09/13 Python
SpringBoot实现登录注册常见问题解决方案
2020/03/04 Python
Django项目uwsgi+Nginx保姆级部署教程实现
2020/04/19 Python
Becextech新西兰:数码单反相机和手机在线商店
2018/04/27 全球购物
安德玛菲律宾官网:Under Armour菲律宾
2020/07/28 全球购物
求职信内容考虑哪几点
2013/10/05 职场文书
超市开店计划书
2014/09/15 职场文书
公安民警正风肃纪剖析材料
2014/10/10 职场文书
三方股东合作协议书
2014/10/28 职场文书
中学生社区服务活动报告
2015/02/05 职场文书
小学教师求职信范文
2015/03/20 职场文书
Python办公自动化之教你如何用Python将任意文件转为PDF格式
2021/06/28 Python