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 相关文章推荐
js导出table数据到excel即导出为EXCEL文档的方法
Oct 10 Javascript
javascript动态修改Li节点值的方法
Jan 20 Javascript
Angular2 Service实现简单音乐播放器服务
Feb 24 Javascript
node基于puppeteer模拟登录抓取页面的实现
May 09 Javascript
详解Vue webapp项目通过HBulider打包原生APP
Jun 29 Javascript
Vue实现一个无限加载列表功能
Nov 13 Javascript
Vue项目中使用better-scroll实现菜单映射功能方法
Sep 11 Javascript
taro小程序添加骨架屏的实现代码
Nov 15 Javascript
微信小程序间使用navigator跳转传值问题实例分析
Mar 27 Javascript
解决Vue大括号字符换行踩的坑
Nov 09 Javascript
原生js实现无缝轮播图效果
Jan 28 Javascript
Vue如何清空对象
Mar 03 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
用IE远程创建Mysql数据库的简易程序
2006/10/09 PHP
php读取msn上的用户信息类
2008/12/05 PHP
PHP+MySQL插入操作实例
2015/01/21 PHP
PHP hebrev()函数用法讲解
2019/02/21 PHP
PHP实现二维数组(或多维数组)转换成一维数组的常见方法总结
2019/12/04 PHP
Node.js实现在目录中查找某个字符串及所在文件
2014/09/03 Javascript
浅谈JavaScript的事件
2015/02/27 Javascript
使用Angular和Nodejs、socket.io搭建聊天室及多人聊天室
2015/08/21 NodeJs
js实现模拟银行卡账号输入显示效果
2015/11/18 Javascript
js实现div模拟模态对话框展现URL内容
2016/05/27 Javascript
jQuery使用经验小技巧(推荐)
2016/05/31 Javascript
深入理解jQuery 事件处理
2016/06/14 Javascript
AngularJS入门教程之Select(选择框)详解
2016/07/27 Javascript
详解vue父子模版嵌套案例
2017/03/04 Javascript
AngularJS折叠菜单实现方法示例
2017/05/18 Javascript
Vue修改mint-ui默认样式的方法
2018/02/03 Javascript
解决webpack+Vue引入iView找不到字体文件的问题
2018/09/28 Javascript
RxJS的入门指引和初步应用
2019/06/15 Javascript
原生JS实现烟花效果
2020/03/10 Javascript
Nuxt默认模板、默认布局和自定义错误页面的实现
2020/05/11 Javascript
[48:45]Ti4 循环赛第二日 NEWBEE vs EG
2014/07/11 DOTA
Python编程之多态用法实例详解
2015/05/19 Python
python opencv检测目标颜色的实例讲解
2018/04/02 Python
浅谈python函数调用返回两个或多个变量的方法
2019/01/23 Python
python tkinter之 复选、文本、下拉的实现
2020/03/04 Python
PyTorch之nn.ReLU与F.ReLU的区别介绍
2020/06/27 Python
python中 _、__、__xx__()区别及使用场景
2020/06/30 Python
如何用PyPy让你的Python代码运行得更快
2020/12/02 Python
努比亚手机官网:nubia
2016/10/06 全球购物
KIKO MILANO西班牙官网:意大利领先的化妆品和护肤品品牌
2019/05/03 全球购物
Contém1g官网:巴西彩妆品牌
2020/01/17 全球购物
俄罗斯品牌服装在线商店:VIPAVENUE
2020/08/10 全球购物
自荐信的禁忌和要点
2013/10/15 职场文书
早会开场白台词大全
2015/06/01 职场文书
盲山观后感
2015/06/11 职场文书
MySQL约束(创建表时的各种条件说明)
2022/06/21 MySQL