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构造器的实现代码小结
May 16 Javascript
js导航栏单击事件背景变换示例代码
Jan 13 Javascript
PHP+jQuery实现随意拖动层并即时保存拖动位置
Apr 30 Javascript
JavaScript中调用函数的4种方式代码实例
Jul 08 Javascript
Bootstrap入门书籍之(四)菜单、按钮及导航
Feb 17 Javascript
bootstrap flask登录页面编写实例
Nov 01 Javascript
URL的参数中有加号传值变为空格的问题(URL特殊字符)
Nov 04 Javascript
js常用的继承--组合式继承
Mar 06 Javascript
SpringMVC简单整合Angular2的示例
Jul 31 Javascript
bootstrap 弹出框modal添加垂直方向滚轴效果
Jul 09 Javascript
mpvue实现小程序签到金币掉落动画(api实现)
Oct 17 Javascript
微信小程序实现拍照和相册选取图片
May 09 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新手上路(十二)
2006/10/09 PHP
在php和MySql中计算时间差的方法
2011/04/22 PHP
PHP 5.5 创建和验证哈希最简单的方法详解
2013/11/07 PHP
php解析url的三个示例
2014/01/20 PHP
PHP的cURL库简介及使用示例
2015/02/06 PHP
给大家分享几个常用的PHP函数
2017/01/15 PHP
ecshop添加菜单及权限分配问题
2017/11/21 PHP
PHP类的自动加载机制实现方法分析
2019/01/10 PHP
CodeIgniter框架实现的整合Smarty引擎DEMO示例
2019/03/28 PHP
PHP实现百度人脸识别
2019/05/06 PHP
javascript 复杂的嵌套环境中输出单引号和双引号
2009/05/26 Javascript
jQuery 锚点跳转滚动条平滑滚动一句话代码
2010/04/30 Javascript
IE不支持getElementsByClassName最终完美解决方案
2012/12/17 Javascript
JS上传图片前的限制包括(jpg jpg gif及大小高宽)等
2012/12/19 Javascript
js不间断滚动的简单实现
2016/06/03 Javascript
喜大普奔!jQuery发布 3.0 最终版
2016/06/12 Javascript
Angular.js与node.js项目里用cookie校验账户登录详解
2017/02/22 Javascript
Canvas实现微信红包照片效果
2018/08/21 Javascript
一些你可能不熟悉的JS知识点总结
2019/03/15 Javascript
vue项目前端错误收集之sentry教程详解
2019/05/27 Javascript
Nodejs封装类似express框架的路由实例详解
2020/01/05 NodeJs
Python实现类继承实例
2014/07/04 Python
Python基于ThreadingTCPServer创建多线程代理的方法示例
2018/01/11 Python
Python cookbook(数据结构与算法)同时对数据做转换和换算处理操作示例
2018/03/23 Python
Python3使用SMTP发送带附件邮件
2020/06/16 Python
利用Python如何制作好玩的GIF动图详解
2018/07/11 Python
如何使用Python实现斐波那契数列
2019/07/02 Python
关于canvas.toDataURL 在iOS运行失败的问题解决
2020/09/16 HTML / CSS
精选鞋类、服装和配饰的全球领先目的地:Bodega
2021/02/27 全球购物
C#基础面试题
2016/10/17 面试题
俄罗斯商务邀请函
2014/01/26 职场文书
2014教育局对照检查材料思想汇报
2014/09/23 职场文书
小学趣味运动会加油稿
2014/09/25 职场文书
布达拉宫的导游词
2015/02/02 职场文书
2015年学校安全管理工作总结
2015/05/11 职场文书
会议主持人开场白台词
2015/05/28 职场文书