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 学习第六课 实现一个Ajax的TreeView
May 17 Javascript
点击按钮自动加关注的代码(sina微博/QQ空间/人人网/腾讯微博)
Jan 02 Javascript
jQuery实现回车键(Enter)切换文本框焦点的代码实例
May 05 Javascript
Node.js 的异步 IO 性能探讨
Oct 08 Javascript
jQuery中dequeue()方法用法实例
Dec 29 Javascript
jQuery中:input选择器用法实例
Jan 03 Javascript
javascript判断移动端访问设备并解析对应CSS的方法
Feb 05 Javascript
详解在Vue中如何使用axios跨域访问数据
Jul 07 Javascript
jQury Ajax使用Token验证身份实例代码
Sep 22 Javascript
浅谈使用React.setState需要注意的三点
Dec 18 Javascript
jQuery常见的遍历DOM操作详解
Sep 05 jQuery
关于JavaScript回调函数的深入理解
Jun 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 print EOF实现方法
2009/05/21 PHP
php实例分享之html转为rtf格式
2014/06/02 PHP
CI框架安全类Security.php源码分析
2014/11/04 PHP
在Linux系统的服务器上隐藏PHP版本号的方法
2015/06/06 PHP
PHP5.6.8连接SQL Server 2008 R2数据库常用技巧分析总结
2019/05/06 PHP
javascript 动态参数判空操作
2008/12/22 Javascript
SharePoint 客户端对象模型 (一) ECMA Script
2011/05/22 Javascript
js实现杯子倒水问题自动求解程序
2013/03/25 Javascript
动态加载js和css(外部文件)
2013/04/17 Javascript
js动态修改表格行colspan列跨度的方法
2015/03/30 Javascript
jQuery实现表格展开与折叠的方法
2015/05/04 Javascript
JavaScript笔记之数据属性和存储器属性
2016/03/31 Javascript
jQuery点击输入框显示验证码图片
2016/05/19 Javascript
p5.js实现动态图形临摹
2019/10/23 Javascript
webpack3.0升级4.0的方法步骤
2020/04/02 Javascript
使用Python下载Bing图片(代码)
2013/11/07 Python
python中threading超线程用法实例分析
2015/05/16 Python
Python Unittest自动化单元测试框架详解
2018/04/04 Python
Python实现绘制双柱状图并显示数值功能示例
2018/06/23 Python
Python可以实现栈的结构吗
2020/05/27 Python
Python叠加矩形框图层2种方法及效果
2020/06/18 Python
Pandas中DataFrame交换列顺序的方法实现
2020/12/14 Python
css3 伪类选择器快速复习小结
2019/09/10 HTML / CSS
HTML5几个设计和修改的页面范例分享
2015/09/29 HTML / CSS
美国美食礼品篮网站:Gourmet Gift Baskets
2019/12/15 全球购物
自荐信不宜过于夸大
2013/11/06 职场文书
美德好少年事迹材料
2014/01/19 职场文书
电大会计学自我鉴定
2014/02/06 职场文书
工作建议书范文
2014/05/13 职场文书
全国税务系统先进集体事迹材料
2014/05/19 职场文书
体育教育毕业生自荐信
2014/06/29 职场文书
个人工作违纪检讨书
2015/05/05 职场文书
宝宝满月祝酒词
2015/08/10 职场文书
如何用PHP实现分布算法之一致性哈希算法
2021/05/26 PHP
欧元符号 €
2022/02/17 杂记
JAVA 线程池(池化技术)的实现原理
2022/04/28 Java/Android