JS模拟的Map类实现方法


Posted in Javascript onJune 17, 2016

本文实例讲述了JS模拟的Map类。分享给大家供大家参考,具体如下:

根据java中map的属性,实现key----value保存

1、使用数组方式存储数据,(使用闭包)

function Map() {
  var struct = function (key, value) {
    this.key = key;
    this.value = value;
  }
  var put = function (key, value) {
    for (var i = 0; i < this.arr.length; i++) {
      if (this.arr[i].key === key) {
        this.arr[i].value = value;
        return;
      }
    }
    this.arr[this.arr.length] = new struct(key, value);
  }
  var get = function (key) {
    for (var i = 0; i < this.arr.length; i++) {
      if (this.arr[i].key === key) {
        return this.arr[i].value;
      }
    }
    return null;
  }
  var remove = function (key) {
    var v;
    for (var i = 0; i < this.arr.length; i++) {
      v = this.arr.pop();
      if (v.key === key) {
        continue;
      }
      this.arr.unshift(v);
    }
  }
  var size = function () {
    return this.arr.length;
  }
  var isEmpty = function () {
    return this.arr.length <= 0;
  }
  this.arr = new Array();
  this.get = get;
  this.put = put;
  this.remove = remove;
  this.size = size;
  this.isEmpty = isEmpty;
}

2、使用JSON方式存储数据(使用原型方式拓展方法)

function Map() {
  this.obj = {};
  this.count = 0;
}
Map.prototype.put = function (key, value) {
  var oldValue = this.obj[key];
  if (oldValue == undefined) {
    this.count++;
  }
  this.obj[key] = value;
}
Map.prototype.get = function (key) {
  return this.obj[key];
}
Map.prototype.remove = function (key) {
  var oldValue = this.obj[key];
  if (oldValue != undefined) {
    this.count--;
    delete this.obj[key];
  }
}
Map.prototype.size = function () {
  return this.count;
}
var map = new Map();
map.put("key","map");
map.put("key","map1");
alert(map.get("key"));//map1
map.remove("key");
alert(map.get("key"));//undefined

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
JavaScript Tips 使用DocumentFragment加快DOM渲染速度
Jun 28 Javascript
jquery事件机制扩展插件 jquery鼠标右键事件
Dec 21 Javascript
元素绑定click点击事件方法
Jun 08 Javascript
js轮盘抽奖实例分析
Apr 17 Javascript
js实现弹窗居中的简单实例
Oct 09 Javascript
javascript 动态脚本添加的简单方法
Oct 11 Javascript
微信小程序 ecshop地址三级联动实现实例代码
Feb 28 Javascript
详解node如何让一个端口同时支持https与http
Jul 04 Javascript
JS实现的倒计时恢复按钮点击功能【可用于协议阅读倒计时】
Apr 19 Javascript
Vue axios设置访问基础路径方法
Sep 19 Javascript
vue 组件开发原理与实现方法详解
Nov 29 Javascript
JS实现压缩上传图片base64长度功能
Dec 03 Javascript
jQuery实现iframe父窗体和子窗体的相互调用
Jun 17 #Javascript
JS工作中的小贴士之”闭包“与事件委托的”阻止冒泡“
Jun 16 #Javascript
JS阻止事件冒泡行为和闭包的方法
Jun 16 #Javascript
jquery实现简单Tab切换菜单效果
Jul 17 #Javascript
特殊日期提示功能的实现方法
Jun 16 #Javascript
JS代码实现根据时间变换页面背景效果
Jun 16 #Javascript
基于JS代码实现图片在页面中旋转效果
Jun 16 #Javascript
You might like
php下过滤html代码的函数 提高程序安全性
2010/03/02 PHP
php的4种常见运行方式
2015/03/20 PHP
PHP结合jQuery.autocomplete插件实现输入自动完成提示的功能
2015/04/27 PHP
PHP常用文件操作函数和简单实例分析
2016/06/03 PHP
PHP输出多个元素的排列或组合的方法
2017/03/14 PHP
swoole和websocket简单聊天室开发
2017/11/18 PHP
ASP.NET jQuery 实例11 通过使用jQuery validation插件简单实现用户登录页面验证功能
2012/02/03 Javascript
父元素与子iframe相互获取变量和元素对象的具体实现
2013/10/15 Javascript
扩展IE中一些不兼容的方法如contains、startWith等等
2014/01/09 Javascript
jquery图片轮播插件仿支付宝2013版全屏图片幻灯片
2014/04/03 Javascript
Javascript中this的用法详解
2014/09/22 Javascript
使用script的src实现跨域和类似ajax效果
2014/11/10 Javascript
JS去除iframe滚动条的方法
2015/04/01 Javascript
教你用javascript实现随机标签云效果_附代码
2016/03/16 Javascript
JavaScript中push(),join() 函数 实例详解
2016/09/06 Javascript
原生JavaScript制作计算器
2016/10/16 Javascript
JS实现图片垂直居中显示小结
2016/12/13 Javascript
JavaScript执行环境及作用域链实例分析
2018/08/01 Javascript
解决webpack dev-server不能匹配post请求的问题
2018/08/24 Javascript
如何在 JavaScript 中更好地利用数组
2018/09/27 Javascript
jquery.param()实现数组或对象的序列化方法
2018/10/08 jQuery
一篇文章让你搞懂JavaScript 原型和原型链
2020/11/23 Javascript
使用Python构建Hopfield网络的教程
2015/04/14 Python
Python 逐行分割大txt文件的方法
2017/10/10 Python
Python利用字典将两个通讯录文本合并为一个文本实例
2018/01/16 Python
Python批量发送post请求的实现代码
2018/05/05 Python
python如何操作mysql
2020/08/17 Python
巴西网上药店:Drogaria Araujo
2021/01/06 全球购物
机电专业毕业生求职信
2013/10/27 职场文书
管理学专业个人求职信范文
2013/12/13 职场文书
心理健康心得体会
2014/01/02 职场文书
给老婆大人的检讨书
2014/02/24 职场文书
高中生操行评语大全
2014/04/25 职场文书
个人四风问题对照检查材料思想汇报
2014/10/06 职场文书
HTML+CSS 实现顶部导航栏菜单制作
2021/06/03 HTML / CSS
nginx实现多geoserver服务的负载均衡
2022/05/15 Servers