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 相关文章推荐
jquery 事件执行检测代码
Dec 09 Javascript
使用javascript为网页增加夜间模式
Jan 26 Javascript
jquery对table中各数据的增加、保存、删除操作示例
May 14 Javascript
JavaScript获取表格(table)当前行的值、删除行、增加行
Jul 03 Javascript
微信小程序 scroll-view隐藏滚动条详解
Jan 16 Javascript
基于vue实现分页/翻页组件paginator示例
Mar 09 Javascript
JS简单实现点击按钮或文字显示遮罩层的方法
Apr 27 Javascript
Vue中自定义全局组件的实现方法
Dec 08 Javascript
微信小程序三级联动选择器使用方法
May 19 Javascript
150行代码带你实现微信小程序中的数据侦听
May 17 Javascript
jenkins自动构建发布vue项目的方法步骤
Jan 04 Vue.js
如何在Vue项目中添加接口监听遮罩
Jan 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输出1000以内质数(素数)示例
2014/02/16 PHP
Dwz与thinkphp整合下的数据导出到Excel实例
2014/12/04 PHP
php随机生成数字字母组合的方法
2015/03/18 PHP
为Yahoo! UI Extensions Grid增加内置的可编辑器
2007/03/10 Javascript
Javascript 类型转换方法
2010/10/24 Javascript
基于javascript滚动图片具体实现
2013/11/18 Javascript
浅析JQuery UI Dialog的样式设置问题
2013/12/18 Javascript
多种方法实现load加载完成后把图片一次性显示出来
2014/02/19 Javascript
JavaScript实现简单的tab选项卡切换
2016/01/05 Javascript
Angular.js中处理页面闪烁的方法详解
2017/03/09 Javascript
jquery replace方法去空格
2017/05/08 jQuery
swiper动态改变滑动内容的实现方法
2018/01/17 Javascript
AngularJS中ng-options实现下拉列表的数据绑定方法
2018/08/13 Javascript
如何为vue的项目添加单元测试
2018/12/19 Javascript
详解实现一个通用的“划词高亮”在线笔记功能
2019/04/23 Javascript
javascript-hashchange事件和历史状态管理实例分析
2020/04/18 Javascript
[01:06]DOTA2小知识课堂 Ep.02 吹风竟可解梦境缠绕
2019/12/05 DOTA
python数据结构树和二叉树简介
2014/04/29 Python
python3批量删除豆瓣分组下的好友的实现代码
2016/06/07 Python
python+pandas分析nginx日志的实例
2018/04/28 Python
python实现自动登录
2018/09/17 Python
python使用Matplotlib画条形图
2020/03/25 Python
Python常用模块os.path之文件及路径操作方法
2019/12/03 Python
keras slice layer 层实现方式
2020/06/11 Python
Melissa香港官网:MDreams
2016/07/01 全球购物
理肤泉美国官网:La Roche-Posay
2018/01/17 全球购物
GWT都有什么特性
2016/12/02 面试题
光电信息专业应届生求职信
2013/10/07 职场文书
企业门卫岗位职责
2013/12/12 职场文书
银行办理业务介绍信
2014/01/18 职场文书
专题组织生活会方案
2014/06/15 职场文书
金融管理专业求职信
2014/07/10 职场文书
2014年人民调解工作总结
2014/12/08 职场文书
某某幼儿园的教育教学管理调研分析报告
2019/11/29 职场文书
导游词之绍兴柯岩古镇
2020/01/09 职场文书
在 Golang 中实现 Cache::remember 方法详解
2021/03/30 Python