javascript 实现map集合


Posted in Javascript onApril 03, 2015

前几天项目上想用map集合一样的东西,简单拿对象拼了一下子,今天闲的慌实现一下
大家不要见笑

代码

var Map = function (){
  /************基础变量**************/
  var hashmap = {};
  var keys = [];
  var vals = [];
  var entrys = [];
  var size = 0;
  var index = {};
 
  var Entry = function(key,value){
    var entryKey = key;
    var entryValue = value;
    this.getKey = function (){
      return entryKey;
    };
    this.getValue = function(){
      return entryValue;
    };
  };
  /************基本方法 按字母排序**************/
  this.clear = function(key) {
    hashmap[key] = undefined;
    var i = index[key];
    entrys.splice(i,1);
    vals.splice(i,1);
    keys.splice(i,1);
    size --;
  };
   
  this.entrySet = function() {
    return entrys;
  };
   
  this.get = function(key){
    return hashmap[key];
  };
   
  this.isEmpty = function() {
    if(hashmap) return true;
    return false;
  };
 
  this.keySet = function() {
    return keys;
  };
   
  this.put = function(key,value){
    if(!this.get(key)){
      entrys.push(new Entry(key,value));
      keys.push(key);
      vals.push(value);
      index[key] = size;
      size ++;
    } else {
      var i = index[key];
      entrys[i] = new Entry(key,value);
      vals[i] = value;
    }
    hashmap[key] = value;
  };
 
  this.size = function() {
    return size;
  };
   
  this.values = function() {
    return vals;
  };
};
/************扩展方法**************/
Map.prototype = {
  containsKey : function(key) {
    if(this.get(key)) return true;
    return false;
  },
  putAll : function(set) {
    for(var e in set){
      if(set[e]){
        this.put(e,set[e]);
      }
    }
  },
  remove : function(key) {
    var v = this.get(key);
    this.clear(key);
    return v;
  }
};
var h = new Map();
h.put('a',10);
h.put('b',11);
h.put('c',3);
h.put('d',5);
console.info(h.size());
h.clear('a');
console.info(h.containsKey('a'));
console.info(h.containsKey('b'));
console.info(h.size());
 
console.log(h.entrySet());
console.log(h.keySet());
console.log(h.values());
 
for(var i in h.entrySet()){
  var obj = h.entrySet()[i];
  console.log(obj.getKey() + ":" + obj.getValue());
}

以上所述就是本文的全部内容了,希望大家能够喜欢。

Javascript 相关文章推荐
彻底搞懂JS无缝滚动代码
Jan 03 Javascript
js 针对html DOM元素操作等经验累积
Mar 11 Javascript
使用text方法获取Html元素文本信息示例
Sep 01 Javascript
使用Javascript实现选择下拉菜单互移并排序
Feb 23 Javascript
jQuery遍历DOM元素与节点方法详解
Apr 14 Javascript
js实现九宫格拼图小游戏
Feb 13 Javascript
Vue 实现双向绑定的四种方法
Mar 16 Javascript
从零搭一个自用的前端脚手架的方法步骤
Sep 23 Javascript
JS防抖和节流实例解析
Sep 24 Javascript
小程序实现可拖动的悬浮按钮
Sep 07 Javascript
JavaScript 事件代理需要注意的地方
Sep 08 Javascript
JS删除对象中某一属性案例详解
Sep 08 Javascript
jQuery制作简洁的图片轮播效果
Apr 03 #Javascript
jQuery制作效果超棒的手风琴折叠菜单
Apr 03 #Javascript
jQuery实现左右切换焦点图
Apr 03 #Javascript
基于jquery ui的alert,confirm方案(支持换肤)
Apr 03 #Javascript
javascript制作sql转换为stringBuffer的小工具
Apr 03 #Javascript
JavaScript替换当前页面的方法
Apr 03 #Javascript
iframe里使用JavaScript控制主页转向的方法
Apr 03 #Javascript
You might like
php中使用ExcelFileParser处理excel获得数据(可作批量导入到数据库使用)
2010/08/21 PHP
PHP禁止个别IP访问网站
2013/10/30 PHP
Laravel 4 初级教程之视图、命名空间、路由
2014/10/30 PHP
PHP 微信支付类 demo
2015/11/30 PHP
laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析
2019/12/20 PHP
从父页面读取和操作iframe中内容方法
2009/07/25 Javascript
javascript 混合的构造函数和原型方式,动态原型方式
2009/12/07 Javascript
JQuery文本框高亮显示插件代码
2011/04/02 Javascript
JavaScript对象学习经验整理
2013/10/12 Javascript
基于jquery animate操作css样式属性小结
2015/11/27 Javascript
基于node实现websocket协议
2016/04/25 Javascript
javascript验证香港身份证的格式或真实性
2017/02/07 Javascript
jQuery中extend函数简单用法示例
2017/10/11 jQuery
vue 的keep-alive缓存功能的实现
2018/03/22 Javascript
原生JS实现列表子元素顺序反转的方法分析
2018/07/02 Javascript
详解使用Nuxt.js快速搭建服务端渲染(SSR)应用
2019/03/13 Javascript
使用 js 简单的实现 bind、call 、aplly代码实例
2019/09/07 Javascript
js实现简单页面全屏
2019/09/17 Javascript
Python中为什么要用self探讨
2015/04/14 Python
在Python中增加和插入元素的示例
2018/11/01 Python
Python数据类型之Dict字典实例详解
2019/05/07 Python
通过实例了解Python异常处理机制底层实现
2020/07/23 Python
意大利在线购买隐形眼镜网站:VisionDirect.it
2019/03/18 全球购物
英国DIY和家居装饰领域的主要品牌:Wickes
2019/11/26 全球购物
如何强制垃圾回收
2015/10/06 面试题
Java中的类包括什么内容?设计时要注意哪些方面
2012/05/23 面试题
优秀员工年终发言演讲稿
2014/01/01 职场文书
酒店保安员岗位职责
2014/01/31 职场文书
美术国培研修感言
2014/02/12 职场文书
团队口号大全
2014/06/06 职场文书
禁止酒驾标语
2014/06/25 职场文书
演讲稿开场白台词
2014/08/25 职场文书
高中社区服务活动报告
2015/02/05 职场文书
2015毕业寄语大全
2015/02/26 职场文书
开学典礼观后感
2015/06/15 职场文书
担保公司2015年终工作总结
2015/10/14 职场文书