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 相关文章推荐
Microsoft Ajax Minifier 压缩javascript的方法
Mar 05 Javascript
JavaScript下通过的XMLHttpRequest发送请求的代码
Jun 28 Javascript
javascript原生和jquery库实现iframe自适应高度和宽度
Jul 18 Javascript
百度地图给map添加右键菜单(判断是否为marker)
Mar 04 Javascript
js 轮播效果实例分享
Dec 28 Javascript
JavaScript实现弹窗效果代码分析
Mar 09 Javascript
深入理解 JavaScript 中的 JSON
Apr 06 Javascript
JavaScript实现单例模式实例分享
Dec 22 Javascript
webpack4.0打包优化策略整理小结
Mar 30 Javascript
node.js实现微信开发之获取用户授权
Mar 18 Javascript
教你30秒发布一个TypeScript包到NPM的方法步骤
Jul 22 Javascript
如何修改Vue打包后文件的接口地址配置的方法
Apr 22 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 删除一个目录及目录下的所有文件的函数代码
2010/05/26 PHP
thinkPHP5.0框架自动加载机制分析
2017/03/18 PHP
解决在laravel中leftjoin带条件查询没有返回右表为NULL的问题
2019/10/15 PHP
使用Microsoft Ajax Minifier减小JavaScript文件大小的方法
2010/04/01 Javascript
js不完美解决click和dblclick事件冲突问题
2012/07/16 Javascript
jquery垂直公告滚动实现代码
2013/12/08 Javascript
Jquery实现动态切换图片的方法
2015/05/18 Javascript
js实现不提交表单获取单选按钮值的方法
2015/08/21 Javascript
原生JS实现仿淘宝网左侧商品分类菜单效果代码
2015/09/10 Javascript
jQuery layui常用方法介绍
2016/07/25 Javascript
JS刷新父窗口的几种方式小结(推荐)
2016/11/09 Javascript
canvas实现钟表效果
2017/02/13 Javascript
基于AngularJS实现的工资计算器实例
2017/06/16 Javascript
浅析JavaScript 函数防抖和节流
2020/07/13 Javascript
[02:20]DOTA2亚洲邀请赛 IG战队出场宣传片
2015/02/07 DOTA
Python合并同一个文件夹下所有PDF文件的方法
2019/03/11 Python
Python字符串格式化f-string多种功能实现
2020/05/07 Python
Python+OpenCV图像处理——打印图片属性、设置存储路径、调用摄像头
2020/10/22 Python
用python写一个带有gui界面的密码生成器
2020/11/06 Python
html5 worker 实例(二) 图片变换效果
2013/06/24 HTML / CSS
办公室文秘自我鉴定
2013/09/21 职场文书
个人找工作自荐信格式
2013/09/21 职场文书
《胡杨》教学反思
2014/02/16 职场文书
见习期自我鉴定范文
2014/03/19 职场文书
《小动物过冬》教学反思
2014/04/17 职场文书
投标人廉洁自律承诺书
2014/05/26 职场文书
本科毕业生求职信
2014/06/15 职场文书
工作证明格式及范本
2014/09/12 职场文书
向国旗敬礼学生寄语大全
2014/09/30 职场文书
党的群众路线教育实践活动党员个人整改措施
2014/10/27 职场文书
预备党员转正材料
2014/12/19 职场文书
4S店销售内勤岗位职责
2015/04/13 职场文书
学校光盘行动倡议书
2015/04/28 职场文书
幼儿园教研工作总结2015
2015/05/12 职场文书
创业计划书之干洗店
2019/09/10 职场文书
JUnit5常用注解的使用
2021/07/02 Java/Android