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 相关文章推荐
jquery 读取页面load get post ajax 四种方式代码写法
Apr 02 Javascript
js简单实现标签云效果实例
Aug 06 Javascript
JS实现图片高亮展示效果实例
Nov 24 Javascript
基于jQuery实现返回顶部实例代码
Jan 01 Javascript
AngularJS使用ng-options指令实现下拉框
Aug 23 Javascript
JS中微信小程序自定义底部弹出框
Dec 22 Javascript
jQuery读取XML文件的方法示例
Feb 03 Javascript
详解使用JS如何制作简单的ASCII图与单极图
Mar 31 Javascript
jQuery插件FusionCharts绘制的2D双面积图效果示例【附demo源码】
Apr 11 jQuery
vue-cli2打包前和打包后的css前缀不一致的问题解决
Aug 24 Javascript
详解使用jest对vue项目进行单元测试
Sep 07 Javascript
layer弹出层倒计时关闭的实现方法
Sep 27 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二分法在IP地址查询中的应用
2008/08/12 PHP
php返回json数据函数实例
2014/10/09 PHP
PHP中调用SVN命令更新网站方法
2015/01/07 PHP
Smarty分页实现方法完整实例
2016/05/11 PHP
PHP cURL获取微信公众号access_token的实例
2018/04/28 PHP
YII2框架中查询生成器Query()的使用方法示例
2020/03/18 PHP
javascript表格的渲染组件
2015/07/03 Javascript
jQuery网页右侧广告跟随滚动代码分享
2020/04/20 Javascript
bootstrap css样式之表单
2017/01/19 Javascript
利用Three.js如何实现阴影效果实例代码
2017/09/26 Javascript
使用vuex缓存数据并优化自己的vuex-cache
2018/05/30 Javascript
详解Vue调用手机相机和相册以及上传
2019/05/05 Javascript
在layui中layer弹出层点击事件无效的解决方法
2019/09/05 Javascript
浅谈Vue组件单元测试究竟测试什么
2020/02/05 Javascript
[01:19:33]DOTA2-DPC中国联赛 正赛 iG vs VG BO3 第一场 2月2日
2021/03/11 DOTA
使用python实现拉钩网上的FizzBuzzWhizz问题示例
2014/05/05 Python
Linux下Python获取IP地址的代码
2014/11/30 Python
TensorFlow中权重的随机初始化的方法
2018/02/11 Python
python十进制和二进制的转换方法(含浮点数)
2018/07/07 Python
利用PyCharm Profile分析异步爬虫效率详解
2019/05/08 Python
Python sklearn库实现PCA教程(以鸢尾花分类为例)
2020/02/24 Python
python 判断txt每行内容中是否包含子串并重新写入保存的实例
2020/03/12 Python
浅谈numpy中函数resize与reshape,ravel与flatten的区别
2020/06/18 Python
Python高阶函数与装饰器函数的深入讲解
2020/11/10 Python
CSS3中颜色线性渐变实战
2015/07/18 HTML / CSS
Aerosoles爱柔仕官网:美国舒软女鞋品牌
2017/07/17 全球购物
斯德哥尔摩通票:Stockholm Pass
2018/01/09 全球购物
美国市场上最实惠的送餐服务:Dinnerly
2018/03/18 全球购物
2013年办公室秘书的个人自我鉴定
2013/10/24 职场文书
小学教育毕业生自荐信
2013/11/18 职场文书
2014年绩效考核工作总结
2014/12/11 职场文书
银行自荐信范文
2015/03/25 职场文书
国情备忘录观后感
2015/06/04 职场文书
小学英语教师研修感悟
2015/11/18 职场文书
幼儿园托班开学寄语(2016秋季)
2015/12/03 职场文书
eval(cmd)与eval($cmd)的区别与联系
2021/07/07 PHP