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 Study Notes 学习笔记(一)
Aug 04 Javascript
超越Jquery_01_isPlainObject分析与重构
Oct 20 Javascript
Prototype源码浅析 Number部分
Jan 16 Javascript
jquery的选择器的使用技巧之如何选择input框
Sep 22 Javascript
js动态修改input输入框的type属性(实现方法解析)
Nov 13 Javascript
百度移动版的url编码解码示例
Apr 29 Javascript
javascript校验价格合法性实例(必须输入2位小数)
May 05 Javascript
jQuery实现复选框批量选择与反选的方法
Jun 17 Javascript
js仿微博实现统计字符和本地存储功能
Dec 22 Javascript
原生javascript实现图片无缝滚动效果
Feb 12 Javascript
Webpack 实现 AngularJS 的延迟加载
Mar 02 Javascript
微信小程序利用button控制条件标签的变量问题
Mar 15 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
上海牌131型七灯四波段四喇叭一级收音机
2021/03/02 无线电
外媒评选出10支2020年最受欢迎的Dota2战队
2021/03/05 DOTA
无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装(win+linux)
2012/05/05 PHP
CodeIgniter输出中文乱码的两种解决办法
2014/06/12 PHP
PHP中的session安全吗?
2016/01/22 PHP
PHP中让json_encode不自动转义斜杠“/”的方法
2017/02/28 PHP
PHP call_user_func和call_user_func_array函数的简单理解与应用分析
2019/11/25 PHP
asp.net和asp下ACCESS的参数化查询
2008/06/11 Javascript
javascript Prototype 对象扩展
2009/05/15 Javascript
当jQuery遭遇CoffeeScript的时候 使用分享
2011/09/17 Javascript
元素未显示设置width/height时IE中使用currentStyle获取为auto
2014/05/04 Javascript
举例讲解AngularJS中的模块
2015/06/17 Javascript
jQuery实现类似淘宝网图片放大效果的方法
2015/07/08 Javascript
Vue概念及常见命令介绍(1)
2016/12/08 Javascript
原生js实现轮播图
2017/02/27 Javascript
使用AngularJS对表单提交内容进行验证的操作方法
2017/07/12 Javascript
vue源码nextTick使用及原理解析
2019/08/13 Javascript
js实现双人五子棋小游戏
2020/05/28 Javascript
js调用网络摄像头的方法
2020/12/05 Javascript
python实现电子词典
2020/04/23 Python
在Python中操作字典之clear()方法的使用
2015/05/21 Python
用Python将IP地址在整型和字符串之间轻松转换
2017/03/22 Python
python中的内置函数max()和min()及mas()函数的高级用法
2018/03/29 Python
python中验证码连通域分割的方法详解
2018/06/04 Python
详解python3中tkinter知识点
2018/06/21 Python
Python中pymysql 模块的使用详解
2019/08/12 Python
python为Django项目上的每个应用程序创建不同的自定义404页面(最佳答案)
2020/03/09 Python
html5 localStorage本地存储_动力节点Java学院整理
2017/07/06 HTML / CSS
HTML5 Geolocation API的正确使用方法
2018/12/04 HTML / CSS
大专生的学习自我评价
2013/12/04 职场文书
公司董事长岗位职责
2014/06/08 职场文书
妇女工作先进事迹
2014/08/17 职场文书
地道战观后感500字
2015/06/04 职场文书
导游词之岳阳楼
2019/09/25 职场文书
react antd实现动态增减表单
2021/06/03 Javascript
winserver2019安装软件一直卡在应用程序正在为首次使用做准备
2022/06/10 Servers