一个简单的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 相关文章推荐
json的前台操作和后台操作实现代码
Jan 20 Javascript
js取得html iframe中的元素和变量值
Jun 30 Javascript
JS+CSS实现的拖动分页效果实例
May 11 Javascript
js实现精确到秒的倒计时效果
May 29 Javascript
javascript加减乘除的简单实例
Jul 12 Javascript
Bootstrap导航条可点击和鼠标悬停显示下拉菜单
Nov 25 Javascript
详解vue 中使用 AJAX获取数据的方法
Jan 18 Javascript
Vue cli构建及项目打包以及出现的问题解决
Aug 27 Javascript
vue: WebStorm设置快速编译运行的方法
Oct 18 Javascript
微信小程序实现页面下拉刷新和上拉加载功能详解
Dec 03 Javascript
判断js数据类型的函数实例详解
May 23 Javascript
Openlayers实现点闪烁扩散效果
Sep 24 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
AM/FM收音机的安装与调试
2021/03/02 无线电
PHP 学习路线与时间表
2010/02/21 PHP
MySQL连接数超过限制的解决方法
2011/07/17 PHP
php 中英文语言转换类代码
2011/08/11 PHP
php检测图片主要颜色的方法
2015/07/01 PHP
些很实用且必用的小脚本代码
2006/06/26 Javascript
几款极品的javascript压缩混淆工具
2007/05/16 Javascript
Tab页界面 用jQuery及Ajax技术实现(php后台)
2011/10/12 Javascript
在javascript中如何得到中英文混合字符串的长度
2014/01/17 Javascript
一个仿糯米弹框效果demo
2014/07/22 Javascript
轻松创建nodejs服务器(4):路由
2014/12/18 NodeJs
AngularJS语法详解(续)
2015/01/23 Javascript
JS版元素周期表实现方法
2015/08/05 Javascript
一道关于JavaScript变量作用域的面试题
2016/03/08 Javascript
微信小程序 scroll-view隐藏滚动条详解
2017/01/16 Javascript
Webpack性能优化 DLL 用法详解
2017/08/10 Javascript
详解javascript replace高级用法
2019/02/17 Javascript
python控制台英汉汉英电子词典
2020/04/23 Python
详解Python的Twisted框架中reactor事件管理器的用法
2016/05/25 Python
Sanic框架异常处理与中间件操作实例分析
2018/07/16 Python
pymongo中group by的操作方法教程
2019/03/22 Python
Python使用matplotlib 模块scatter方法画散点图示例
2019/09/27 Python
英国DIY和家居装饰领域的主要品牌:Wickes
2019/11/26 全球购物
Tessabit日本:集世界奢侈品和设计师品牌的意大利精品买手店
2020/01/07 全球购物
final, finally, finalize的区别
2012/03/01 面试题
大学生个人求职信范文
2013/09/21 职场文书
大学生就业推荐信范文
2013/11/29 职场文书
网上卖盒饭创业计划书范文
2014/02/07 职场文书
大学生秋游活动方案
2014/02/17 职场文书
2014年党员公开承诺践诺书
2014/03/25 职场文书
2014年党课学习材料
2014/05/11 职场文书
财务管理专业求职信
2014/06/11 职场文书
2014年社区国庆节活动方案
2014/09/16 职场文书
项目建议书
2015/02/04 职场文书
个人收入证明范本
2015/06/12 职场文书
SpringBoot2零基础到精通之异常处理与web原生组件注入
2022/03/22 Java/Android