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设计模式初探
Jan 07 Javascript
javascript数组遍历的方法实例分析
Sep 13 Javascript
jQuery 选择器(61种)整理总结
Sep 26 Javascript
jquery二级目录选中当前页的css样式
Dec 08 Javascript
jquery pagination分页插件使用详解(后台struts2)
Jan 22 Javascript
jQuery、zepto、js常用小技巧
Feb 12 Javascript
Vue.js实现移动端短信验证码功能
Mar 29 Javascript
自定义类似于jQuery UI Selectable 的Vue指令v-selectable
Aug 23 jQuery
Vue中添加手机验证码组件功能操作方法
Dec 07 Javascript
js嵌套的数组扁平化:将多维数组变成一维数组以及push()与concat()区别的讲解
Jan 19 Javascript
小程序自定义模板实现吸顶功能
Jan 08 Javascript
vue-i18n实现中英文切换的方法
Jul 06 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设置图片文件上传大小的具体实现方法
2013/10/11 PHP
PHP中file_exists()判断中文文件名无效的解决方法
2014/11/12 PHP
深入理解PHP之OpCode原理详解
2016/06/01 PHP
PHP将数据导出Excel表中的实例(投机型)
2017/07/31 PHP
thinkPHP+LayUI 流加载实现功能
2019/09/27 PHP
优秀js开源框架-jQuery使用手册(1)
2007/03/10 Javascript
Document对象内容集合(比较全)
2010/09/06 Javascript
鼠标悬浮显示二级菜单效果的jquery实现
2014/10/29 Javascript
Javascript中typeof 用法小结
2015/05/12 Javascript
jquery用ajax方式从后台获取json数据后如何将内容填充到下拉列表
2015/08/26 Javascript
jQuery+CSS3折叠卡片式下拉列表框实现效果
2015/11/02 Javascript
JS与jQ读取xml文件的方法
2015/12/08 Javascript
浅析script标签中的defer与async属性
2016/11/30 Javascript
Bootstrap基本组件学习笔记之分页(12)
2016/12/08 Javascript
canvas绘制的直线动画
2017/01/23 Javascript
vue-cli构建项目使用 less的方法
2017/10/04 Javascript
babel的使用及安装配置教程
2018/02/22 Javascript
详解Node 定时器
2018/02/26 Javascript
Vue resource三种请求格式和万能测试地址
2018/09/26 Javascript
JavaScript设计模式之命令模式实例分析
2019/01/16 Javascript
React通过redux-persist持久化数据存储的方法示例
2019/02/14 Javascript
ES6知识点整理之函数对象参数默认值及其解构应用示例
2019/04/17 Javascript
基于jQuery的时间戳与日期间的转化
2019/06/21 jQuery
vue实现简单的日历效果
2020/09/24 Javascript
vue element upload组件 file-list的动态绑定实现
2019/10/11 Javascript
浅谈Vue开发人员的7个最好的VSCode扩展
2021/01/20 Vue.js
[01:29]2017 DOTA2国际邀请赛官方英雄手办展示
2017/03/18 DOTA
对Python subprocess.Popen子进程管道阻塞详解
2018/10/29 Python
pygame游戏之旅 创建游戏窗口界面
2018/11/20 Python
python基于socket进行端口转发实现后门隐藏的示例
2019/07/25 Python
Lands’ End英国官方网站:高质量男女服装
2017/10/07 全球购物
世界领先的豪华床上用品供应商之一:Bedeck Home
2019/03/18 全球购物
Regatta官网:英国最受欢迎的户外服装和鞋类品牌
2019/05/01 全球购物
2015年幼儿园新年寄语
2014/12/08 职场文书
2016年共产党员公开承诺书
2016/03/24 职场文书
Rhit高效可视化Nginx日志查看工具
2021/11/01 Servers