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 相关文章推荐
对象无length属性时IE6/IE7中无法将其转换成伪数组(ArrayLike)
Jul 31 Javascript
Jquery带搜索框的下拉菜单
May 06 Javascript
js获取控件位置以及不同浏览器中的差别介绍
Aug 08 Javascript
js实现发送验证码后的倒计时功能
May 28 Javascript
jQuery自定义图片缩放拖拽插件imageQ实现方法(附demo源码下载)
May 27 Javascript
vue2.0开发实践总结之入门篇
Dec 06 Javascript
VUE axios发送跨域请求需要注意的问题
Jul 06 Javascript
jQuery阻止事件冒泡实例分析
Jul 03 jQuery
详解SPA中前端路由基本原理与实现方式
Sep 12 Javascript
原生JS实现图片懒加载之页面性能优化
Apr 26 Javascript
Vue事件修饰符native、self示例详解
Jul 09 Javascript
微信小程序与公众号实现数据互通的方法
Jul 25 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 模板高级篇总结
2006/12/21 PHP
PHP实现动态柱状图改进版
2015/03/30 PHP
php实现在多维数组中查找特定value的方法
2015/07/29 PHP
php设计模式之适配器模式实例分析【星际争霸游戏案例】
2020/04/07 PHP
JavaScript 浮点数运算 精度问题
2009/10/06 Javascript
javascript getElementsByClassName实现代码
2010/10/11 Javascript
使用JavaScript动态设置样式实现代码(2)
2013/01/25 Javascript
js带按钮的提示框可供选择示例代码
2013/09/17 Javascript
纯js写的分页表格数据为json串
2014/02/18 Javascript
JavaScript获取网页中第一个链接ID的方法
2015/04/03 Javascript
javascript格式化日期时间方法汇总
2015/06/19 Javascript
Vue.js实现多条件筛选、搜索、排序及分页的表格功能
2020/11/24 Javascript
bootstrap的工具提示实例代码
2017/05/17 Javascript
详解vue前后台数据交互vue-resource文档
2017/07/19 Javascript
vue按需引入element Transfer 穿梭框
2017/09/30 Javascript
Bootstrap开发中Tab标签页切换图表显示问题的解决方法
2018/07/13 Javascript
angularJs复选框checkbox选中进行ng-show显示隐藏的方法
2018/10/08 Javascript
轻量级富文本编辑器wangEditor结合vue使用方法示例
2018/10/10 Javascript
nodejs简单抓包工具使用详解
2019/08/23 NodeJs
[01:12]DOTA2次级职业联赛 - Newbee.Y 战队宣传片
2014/12/01 DOTA
[02:10]探秘浦东源深体育馆 DOTA2 Supermajor不见不散
2018/05/17 DOTA
Python 调用DLL操作抄表机
2009/01/12 Python
Python中apply函数的用法实例教程
2014/07/31 Python
Python中自定义函数的教程
2015/04/27 Python
Python实现的中国剩余定理算法示例
2017/08/05 Python
python 内置模块详解
2019/01/01 Python
python实现简单的购物程序代码实例
2020/03/03 Python
python中JWT用户认证的实现
2020/05/18 Python
Django封装交互接口代码
2020/07/12 Python
python Gabor滤波器讲解
2020/10/26 Python
澳大利亚顶级美发和美容贸易超市:glamaCo
2020/01/19 全球购物
入团者的自我评价分享
2013/12/02 职场文书
公安局副政委班子个人对照检查材料
2014/10/04 职场文书
党风廉政承诺书2016
2016/03/25 职场文书
读鲁迅先生的经典名言
2019/08/20 职场文书
python图像处理 PIL Image操作实例
2022/04/09 Python