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.Jcrop的头像编辑器
Mar 01 Javascript
HTTP 304错误的详细讲解
Nov 13 Javascript
jquery+javascript编写国籍控件
Feb 12 Javascript
浅析JavaScript函数的调用模式
Aug 10 Javascript
利用JavaScript判断浏览器类型及版本
Aug 23 Javascript
轻松掌握JavaScript状态模式
Sep 07 Javascript
BootStrap的两种模态框方式
May 10 Javascript
微信小程序的分类页面制作
Jun 27 Javascript
Angular搜索 过滤 批量删除 添加 表单验证功能集锦(实例代码)
Oct 25 Javascript
vue中监听路由参数的变化及方法
Dec 06 Javascript
手写Vue源码之数据劫持示例详解
Jan 04 Vue.js
详解ES6实现类的私有变量的几种写法
Feb 10 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
一些php技巧与注意事项分析
2011/02/03 PHP
PHP zip扩展Linux下安装过程分享
2014/05/05 PHP
PHP中的一些常用函数收集
2015/05/26 PHP
PHP实现链式操作的原理详解
2016/09/16 PHP
Laravel学习教程之路由模块
2017/08/18 PHP
PHP使用ActiveMQ实现消息队列的方法详解
2019/05/31 PHP
弹出广告特效(一个IP只弹出一次)的代码
2007/07/27 Javascript
数组Array进行原型prototype扩展后带来的for in遍历问题
2010/02/07 Javascript
基于jQuery的计算文本框字数的代码
2012/06/06 Javascript
浏览器窗口大小变化时使用resize事件对框架不起作用的解决方法
2014/05/11 Javascript
javascript轻量级模板引擎juicer使用指南
2014/06/22 Javascript
jQuery验证插件 Validate详解
2014/11/20 Javascript
jQuery中position()方法用法实例
2015/01/16 Javascript
Jquery数字上下滚动动态切换插件
2015/08/08 Javascript
使用Promise解决多层异步调用的简单学习心得
2016/05/17 Javascript
你不知道的 javascript【推荐】
2017/01/08 Javascript
通过命令行创建vue项目的方法
2017/07/20 Javascript
简单实现js进度条加载效果
2020/03/25 Javascript
Vue项目中配置pug解析支持
2019/05/10 Javascript
node.js 使用 net 模块模拟 websocket 握手进行数据传递操作示例
2020/02/11 Javascript
JavaScript设计模式之观察者模式与发布订阅模式详解
2020/05/07 Javascript
基于JS实现操作成功之后自动跳转页面
2020/09/25 Javascript
[43:51]2018DOTA2亚洲邀请赛3月30日 小组赛B组 EG VS Secret
2018/03/31 DOTA
Python生成器(Generator)详解
2015/04/13 Python
Python实现修改IE注册表功能示例
2018/05/10 Python
在win10和linux上分别安装Python虚拟环境的方法步骤
2019/05/09 Python
使用CSS3实现input多选框自定义样式的方法示例
2019/07/19 HTML / CSS
竞争上岗演讲稿
2014/01/05 职场文书
总经理任命书
2014/03/29 职场文书
社区精神文明建设汇报材料
2014/08/17 职场文书
学生实习证明模板汇总
2014/09/25 职场文书
个人四风问题整改措施
2014/10/24 职场文书
公司联欢会主持词
2015/07/04 职场文书
教你怎么用python实现字符串转日期
2021/05/24 Python
python使用pycharm安装pyqt5以及相关配置
2022/04/22 Python