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 最简单的属性菜单
Oct 08 Javascript
让ie运行js时提示允许阻止内容运行的解决方法
Oct 24 Javascript
Javascript的各种节点操作实例演示代码
Jun 27 Javascript
jQuery移动和复制dom节点实用DOM操作案例
Dec 17 Javascript
javascript简单实现命名空间效果
Mar 06 Javascript
Node.js和Express简单入门介绍
Mar 24 Javascript
详解AngularJS ng-class样式切换
Jun 27 Javascript
Angular实现的简单定时器功能示例
Dec 28 Javascript
详解vue移动端日期选择组件
Feb 22 Javascript
Vuex 单状态库与多模块状态库详解
Dec 11 Javascript
基于vue.js实现购物车
Jan 15 Javascript
jquery css实现流程进度条
Mar 26 jQuery
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
关于Sphinx创建全文检索的索引介绍
2013/06/25 PHP
php中file_exists函数使用详解
2015/05/08 PHP
PHP7基于curl实现的上传图片功能
2018/05/11 PHP
PHP类的自动加载机制实现方法分析
2019/01/10 PHP
Yii框架应用组件用法实例分析
2020/05/15 PHP
Prototype使用指南之base.js
2007/01/10 Javascript
jquery.ui.draggable中文文档
2009/11/24 Javascript
JSON 编辑器实现代码
2009/12/06 Javascript
Extjs grid添加一个图片状态或者按钮的方法
2014/04/03 Javascript
javascript中实现兼容JAVA的hashCode算法代码分享
2020/08/11 Javascript
jquery实现选中单选按钮下拉伸缩效果
2015/08/06 Javascript
jQuery实现动态添加和删除一个div
2015/08/12 Javascript
JS实现不规则TAB选项卡效果代码
2015/09/16 Javascript
JS实现自定义简单网页软键盘效果代码
2015/11/05 Javascript
基于jquery实现鼠标左右拖动滑块滑动附源码下载
2015/12/23 Javascript
js实现html table 行,列锁定的简单实例
2016/10/13 Javascript
jquery.multiselect多选下拉框实现代码
2016/11/11 Javascript
值得分享的Bootstrap Table使用教程
2016/11/23 Javascript
微信小程序 跳转传递数据的实例
2017/07/06 Javascript
解决LayUI表单获取不到data的问题
2018/08/20 Javascript
微信 jssdk 签名错误invalid signature的解决方法
2019/01/14 Javascript
React 全自动数据表格组件——BodeGrid的实现思路
2019/06/12 Javascript
python抓取京东价格分析京东商品价格走势
2014/01/09 Python
Python抓取电影天堂电影信息的代码
2016/04/07 Python
python模仿网页版微信发送消息功能
2018/02/24 Python
python+tkinter实现学生管理系统
2019/08/20 Python
Django mysqlclient安装和使用详解
2020/09/17 Python
Python命令行参数argv和argparse该如何使用
2021/02/08 Python
Paper Cape官网:美国婴儿和儿童服装品牌
2019/11/02 全球购物
什么时候用assert
2015/05/08 面试题
周年庆典邀请函范文
2014/01/24 职场文书
新课培训心得体会
2014/09/03 职场文书
习总书记三严三实学习心得体会
2014/10/13 职场文书
2016年“六一儿童节”校园广播稿
2015/12/17 职场文书
python爬取企查查企业信息之selenium自动模拟登录企查查
2021/04/08 Python
Go语言-为什么返回值为接口类型,却返回结构体
2021/04/24 Golang