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 相关文章推荐
Prototype使用指南之string.js
Jan 10 Javascript
jquery animate 动画效果使用说明
Nov 04 Javascript
jQuery EasyUI 中文API Layout(Tabs)
Apr 27 Javascript
基于jquery的当鼠标滚轮到最底端继续加载新数据思路分享(多用于微博、空间、论坛 )
Oct 10 Javascript
jQuery基于cookie实现的购物车实例分析
Dec 24 Javascript
jQuery中delegate()方法的用法详解
Oct 13 Javascript
微信小程序scroll-view仿拼多多横向滑动滚动条
Apr 21 Javascript
解决Vue2.0 watch对象属性变化监听不到的问题
Sep 11 Javascript
js中offset,client , scroll 三大元素知识点总结
Sep 11 Javascript
vue设置动态请求地址的例子
Nov 01 Javascript
Node.js开发之套接字(socket)编程入门示例
Nov 05 Javascript
JS实现的进制转换,浮点数相加,数字判断操作示例
Nov 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调用Oracle存储过程
2006/10/09 PHP
PHP常用设计模式之委托设计模式
2016/02/13 PHP
详解PHP中foreach的用法和实例
2016/10/25 PHP
php命令行模式代码实例详解
2021/02/26 PHP
DEFER怎么用?
2006/07/01 Javascript
jquery autocomplete自动完成插件的的使用方法
2010/08/07 Javascript
详解JavaScript函数绑定
2013/08/18 Javascript
javascript生成随机数的方法
2014/05/16 Javascript
js比较日期大小的方法
2015/05/12 Javascript
基于JS实现导航条之调用网页助手小精灵的方法
2016/06/17 Javascript
使用BootStrap实现用户登录界面UI
2016/08/10 Javascript
基于JavaScript实现点击页面任何位置返回
2016/08/31 Javascript
jQuery实现的放大镜效果示例
2016/09/13 Javascript
js中json处理总结之JSON.parse
2016/10/14 Javascript
AngularJS实时获取并显示密码的方法
2018/02/06 Javascript
jQuery实现form表单序列化转换为json对象功能示例
2018/05/23 jQuery
Vue 组件修改根实例的数据的方法
2019/04/02 Javascript
tweenjs缓动算法的使用实例分析
2019/08/26 Javascript
关于Vue中axios的封装实例详解
2019/10/20 Javascript
JS实现简易留言板特效
2019/12/23 Javascript
node.js中path路径模块的使用方法实例分析
2020/02/13 Javascript
Vue实现仿iPhone悬浮球的示例代码
2020/03/13 Javascript
[00:35]DOTA2上海特级锦标赛 MVP.Phx战队宣传片
2016/03/04 DOTA
Python中functools模块的常用函数解析
2016/06/30 Python
python数据结构之列表和元组的详解
2017/09/23 Python
python中将字典形式的数据循环插入Excel
2018/01/16 Python
python实战之实现excel读取、统计、写入的示例讲解
2018/05/02 Python
解决pycharm上的jupyter notebook端口被占用问题
2019/12/17 Python
解决pycharm中导入自己写的.py函数出错问题
2020/02/12 Python
Python如何定义有可选参数的元类
2020/07/31 Python
联想韩国官网:Lenovo Korea
2018/05/10 全球购物
党校培训自我鉴定
2014/02/01 职场文书
《蒙娜丽莎之约》教学反思
2014/02/27 职场文书
电气工程师岗位职责
2015/02/12 职场文书
刑事附带民事上诉状
2015/05/23 职场文书
Redis中一个String类型引发的惨案
2021/07/25 Redis