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 为label标签和div标签赋值的方法
Aug 08 Javascript
仿百度的关键词匹配搜索示例
Sep 25 Javascript
jQuery+ajax实现鼠标单击修改内容的方法
Jun 27 Javascript
BootstrapTable与KnockoutJS相结合实现增删改查功能【一】
May 10 Javascript
JS瀑布流实现方法实例分析
Dec 19 Javascript
JS控件bootstrap suggest plugin使用方法详解
Mar 25 Javascript
jQuery简单实现的HTML页面文本框模糊匹配查询功能完整示例
May 09 jQuery
bootstrap里bootstrap动态加载下拉框的实例讲解
Aug 10 Javascript
vue 解决异步数据更新问题
Oct 29 Javascript
jquery实现异步文件上传ajaxfileupload.js
Oct 23 jQuery
React列表栏及购物车组件使用详解
Jun 28 Javascript
vue2的 router在使用过程中遇到的一些问题
Apr 13 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程序猿都应该拜读的书
2014/12/31 PHP
apache集成php7.3.5的详细步骤
2019/06/20 PHP
“不能执行已释放的Script代码”错误的原因及解决办法
2007/09/09 Javascript
JS getMonth()日期函数的值域是0-11
2010/02/15 Javascript
Javascript 面向对象之重载
2010/05/04 Javascript
基于jQuery创建鼠标悬停效果的方法
2015/03/07 Javascript
js实现图片无缝滚动
2015/12/23 Javascript
jQuery 3.0 的变化及使用方法
2016/02/01 Javascript
vue2.0实现移动端的输入框实时检索更新列表功能
2018/05/08 Javascript
bootstrapTable+ajax加载数据 refresh更新数据
2018/08/31 Javascript
vue-cli3全面配置详解
2018/11/14 Javascript
Vue中多个元素、组件的过渡及列表过渡的方法示例
2019/02/13 Javascript
在Vue.js中使用TypeScript的方法
2020/03/19 Javascript
vscode中Vue别名路径提示的实现
2020/07/31 Javascript
[20:21]《一刀刀一天》第十六期:TI国际邀请赛正式打响,总奖金超过550万
2014/05/23 DOTA
[03:36]2015国际邀请赛第二日现场精彩集锦
2015/08/06 DOTA
Python映射拆分操作符用法实例
2015/05/19 Python
详解Python的Django框架中inclusion_tag的使用
2015/07/21 Python
Python计算字符宽度的方法
2016/06/14 Python
python多进程控制学习小结
2018/10/31 Python
对python实现模板生成脚本的方法详解
2019/01/30 Python
python无序链表删除重复项的方法
2020/01/17 Python
关于Django Models CharField 参数说明
2020/03/31 Python
树莓派4B安装Tensorflow的方法步骤
2020/07/16 Python
HTML5离线缓存在tomcat下部署可实现图片flash等离线浏览
2012/12/13 HTML / CSS
AmazeUI 模态窗口的实现代码
2020/08/18 HTML / CSS
美国最受欢迎的童装品牌之一:The Children’s Place
2016/07/23 全球购物
Ryderwear澳洲官网:澳大利亚高端健身训练装备品牌
2018/09/18 全球购物
英国在线电子和小工具商店:TecoBuy
2018/10/06 全球购物
教师个人的自我评价分享
2014/01/02 职场文书
2014年公务员思想汇报范文:全心全意为人民服务
2014/03/06 职场文书
五四青年节优秀演讲稿范文
2014/05/28 职场文书
习总书记三严三实学习心得体会
2014/10/13 职场文书
回复函范文
2015/07/14 职场文书
六种css3实现的边框过渡效果
2021/04/22 HTML / CSS
JS中如何优雅的使用async await详解
2021/10/05 Javascript