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 相关文章推荐
csdn 批量接受好友邀请
Feb 19 Javascript
Javascript 判断客户端浏览器类型代码
Mar 01 Javascript
js函数中onmousedown和onclick的区别和联系探讨
May 19 Javascript
javascript匿名函数应用示例介绍
Mar 07 Javascript
Vue.js数据绑定之data属性
Jul 07 Javascript
JavaScript基础心法 数据类型
Mar 05 Javascript
读懂CommonJS的模块加载
Apr 19 Javascript
node.js实现带进度条的多文件上传
Mar 27 Javascript
React中使用UMEditor的方法示例
Dec 27 Javascript
vue使用微信扫一扫功能的实现代码
Apr 11 Javascript
vue实现防抖的实例代码
Jan 11 Vue.js
vue常用高阶函数及综合实例
Feb 25 Vue.js
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如何透过ODBC来存取数据库
2006/10/09 PHP
使用Discuz关键词服务器实现PHP中文分词
2014/03/11 PHP
php获取从html表单传递数组的方法
2015/03/20 PHP
php array_keys 返回数组的键名
2016/10/25 PHP
Jquery Ajax 学习实例2 向页面发出请求 返回JSon格式数据
2010/03/15 Javascript
使用js检测浏览器的实现代码
2013/05/14 Javascript
jquery无刷新验证邮箱地址实现实例
2014/02/19 Javascript
jQuery实现图片局部放大镜效果
2016/03/17 Javascript
详解在 Angular 项目中添加 clean-blog 模板
2017/07/04 Javascript
使用vue-router beforEach实现判断用户登录跳转路由筛选功能
2018/06/25 Javascript
jQuery实现的简单手风琴效果示例
2018/08/29 jQuery
js脚本中执行java后台代码方法解析
2019/10/11 Javascript
VUE中V-IF条件判断改变元素的样式操作
2020/08/09 Javascript
vue 动态添加的路由页面刷新时失效的原因及解决方案
2021/02/26 Vue.js
[02:57]2014DOTA2国际邀请赛 选手辛苦解说更辛苦
2014/07/10 DOTA
python连接mongodb操作数据示例(mongodb数据库配置类)
2013/12/31 Python
利用python批量检查网站的可用性
2016/09/09 Python
python 调用钉钉机器人的方法
2019/02/20 Python
Python实现微信消息防撤回功能的实例代码
2019/04/29 Python
python中使用while循环的实例
2019/08/05 Python
Python flask框架端口失效解决方案
2020/06/04 Python
公认8个效率最高的爬虫框架
2020/07/28 Python
浅析rem和em和px vh vw和% 移动端长度单位
2016/04/28 HTML / CSS
Zavvi荷兰:英国大型音像制品和图书游戏零售商
2018/03/22 全球购物
德国珠宝和手表在线商店:VALMANO
2019/03/24 全球购物
Cecil Mode法国在线商店:女性时尚
2021/01/08 全球购物
2014学雷锋活动总结
2014/03/09 职场文书
法律专业大学生职业生涯规划书:向目标一步步迈进
2014/09/22 职场文书
初中家长评语和期望
2014/12/26 职场文书
五年级上册复习计划
2015/01/19 职场文书
运动会100米加油稿
2015/07/21 职场文书
新娘婚礼答谢词
2015/09/29 职场文书
观看《信仰》心得体会
2016/01/15 职场文书
MySQL EXPLAIN输出列的详细解释
2021/05/12 MySQL
详细聊聊MySQL中慢SQL优化的方向
2021/08/30 MySQL
python使用shell脚本创建kafka连接器
2022/04/29 Python