Javacript中自定义的map.js  的方法


Posted in Javascript onNovember 26, 2017

 js中没有map这个类,只能自己写一个。以下map.js和map-util.js都是自定义的map,任选其一就可以。你可以用它来像java里new Map()和put()、remove()、get()等方法。

map.js:

function Map() {   
  var struct = function(key, value) {   
    this.key = key;   
    this.value = value;   
  }   
  var put = function(key, value){   
    for (var i = 0; i < this.arr.length; i++) {   
      if ( this.arr[i].key === key ) {   
        this.arr[i].value = value;   
        return;   
      }   
    }   
    this.arr[this.arr.length] = new struct(key, value);   
  }   
  var get = function(key) {   
    for (var i = 0; i < this.arr.length; i++) {   
      if ( this.arr[i].key === key ) {   
        return this.arr[i].value;   
      }   
    }   
    return null;   
  }   
  var remove = function(key) {   
    var v;   
    for (var i = 0; i < this.arr.length; i++) {   
      v = this.arr.pop();   
      if ( v.key === key ) {   
        continue;   
      }   
      this.arr.unshift(v);   
    }   
  }   
  var size = function() {   
    return this.arr.length;   
  }   
  var isEmpty = function() {   
    return this.arr.length <= 0;   
  }   
  this.arr = new Array();   
  this.get = get;   
  this.put = put;   
  this.remove = remove;   
  this.size = size;   
  this.isEmpty = isEmpty;   
}

map-util.js:

function Map() { 
  this.elements = new Array(); 
  var i; 
  //获取MAP元素个数 
  this.size = function() { 
    return this.elements.length; 
  }; 
  //判断MAP是否为空 
  this.isEmpty = function() { 
    return (this.elements.length < 1); 
  }; 
  //删除MAP所有元素 
  this.clear = function() { 
    this.elements = new Array(); 
  }; 
  //向MAP中增加元素(key, value)  
  this.put = function(_key, _value) { 
    this.elements.push( { 
      key : _key, 
      value : _value 
    }); 
  }; 
  this.putFirst = function(_key, _value){ 
    var tempList = this.elements; 
    this.elements = new Array(); 
    this.elements.push( { 
      key : _key, 
      value : _value 
    }); 
    for(var i=0;i<tempList.length;i++){ 
      this.elements.push( 
        tempList[i] 
      ); 
    } 
  } 
  //删除指定KEY的元素,成功返回True,失败返回False 
  this.remove = function(_key) { 
    var bln = false; 
    try { 
      for (i = 0; i < this.elements.length; i++) { 
        if (this.elements[i].key == _key) { 
          this.elements.splice(i, 1); 
          return true; 
        } 
      } 
    } catch (e) { 
      bln = false; 
    } 
    return bln; 
  }; 
  //获取指定KEY的元素值VALUE,失败返回NULL 
  this.get = function(_key) { 
    try { 
      for (i = 0; i < this.elements.length; i++) { 
        if (this.elements[i].key == _key) { 
          return this.elements[i].value; 
        } 
      } 
    } catch (e) { 
      return null; 
    } 
  }; 
  //获取指定索引的元素(使用element.key,element.value获取KEY和VALUE),失败返回NULL 
  this.element = function(_index) { 
    if (_index < 0 || _index >= this.elements.length) { 
      return null; 
    } 
    return this.elements[_index]; 
  }; 
  //判断MAP中是否含有指定KEY的元素 
  this.containsKey = function(_key) { 
    var bln = false; 
    try { 
      for (i = 0; i < this.elements.length; i++) { 
        if (this.elements[i].key == _key) { 
          bln = true; 
        } 
      } 
    } catch (e) { 
      bln = false; 
    } 
    return bln; 
  }; 
  //判断MAP中是否含有指定VALUE的元素 
  this.containsValue = function(_value) { 
    var bln = false; 
    try { 
      for (i = 0; i < this.elements.length; i++) { 
        if (this.elements[i].value == _value) { 
          bln = true; 
        } 
      } 
    } catch (e) { 
      bln = false; 
    } 
    return bln; 
  }; 
  //获取MAP中所有VALUE的数组(ARRAY) 
  this.values = function() { 
    var arr = new Array(); 
    for (i = 0; i < this.elements.length; i++) { 
      arr.push(this.elements[i].value); 
    } 
    return arr; 
  }; 
  //获取MAP中所有KEY的数组(ARRAY) 
  this.keys = function() { 
    var arr = new Array(); 
    for (i = 0; i < this.elements.length; i++) { 
      arr.push(this.elements[i].key); 
    } 
    return arr; 
  }; 
}

总结

以上所述是小编给大家介绍的 Javacript中自定义的map.js  的方法,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Javascript 相关文章推荐
基于JQuery的密码强度验证代码
Mar 01 Javascript
ExtJS 工具栏 分页事件参数
Mar 05 Javascript
javascript实现捕捉键盘上按下的键
May 05 Javascript
Bootstrap3学习笔记(三)之表格
May 20 Javascript
JS识别浏览器类型(电脑浏览器和手机浏览器)
Nov 18 Javascript
原生js实现焦点轮播图效果
Jan 12 Javascript
基于jQuery实现数字滚动效果
Jan 16 Javascript
jQuery插件FusionCharts绘制的2D双柱状图效果示例【附demo源码】
May 13 jQuery
微信小程序选择图片和放大预览图片功能
Nov 02 Javascript
js获取form表单中name属性的值
Feb 27 Javascript
H5+css3+js搭建带验证码的登录页面
Oct 11 Javascript
原生JS实现音乐播放器的示例代码
Feb 25 Javascript
css和js实现弹出登录居中界面完整代码
Nov 26 #Javascript
js 判断一个数字是不是2的n次方幂的实例
Nov 26 #Javascript
微信小程序wx.request实现后台数据交互功能分析
Nov 25 #Javascript
利用JavaScript的%做隔行换色的实例
Nov 25 #Javascript
zTree节点文字过多的处理方法
Nov 24 #Javascript
JavaScript程序设计高级算法之动态规划实例分析
Nov 24 #Javascript
详解vue-cli脚手架build目录中的dev-server.js配置文件
Nov 24 #Javascript
You might like
深入理解PHP原理之Session Gc的一个小概率Notice
2011/04/12 PHP
php设计模式 State (状态模式)
2011/06/26 PHP
php中通过curl smtp发送邮件
2012/06/05 PHP
php+ajax做仿百度搜索下拉自动提示框(有实例)
2012/08/21 PHP
分割GBK中文遭遇乱码的解决方法
2013/08/09 PHP
PHP+shell脚本操作Memcached和Apache Status的实例分享
2016/03/11 PHP
YII Framework框架教程之日志用法详解
2016/03/14 PHP
php7安装yar扩展的方法详解
2017/08/03 PHP
Jquery实现简单的动画效果代码
2012/03/18 Javascript
JavaScript操纵窗口的方法小结
2013/06/28 Javascript
JavaScript新窗口与子窗口传值详解
2014/02/11 Javascript
JavaScript中合并数组的N种方法
2014/09/16 Javascript
实现placeholder效果的方案汇总
2015/06/11 Javascript
js将json格式的对象拼接成复杂的url参数方法
2016/05/25 Javascript
批量下载对路网图片并生成html的实现方法
2016/06/07 Javascript
理解Angular的providers给Http添加默认headers
2017/07/04 Javascript
如何使用JavaScript实现栈与队列
2019/06/24 Javascript
JQuery实现ul中添加LI和删除指定的Li元素功能完整示例
2019/10/16 jQuery
简单介绍Python中的round()方法
2015/05/15 Python
Python3 循环语句(for、while、break、range等)
2017/11/20 Python
Python输入二维数组方法
2018/04/13 Python
Python根据欧拉角求旋转矩阵的实例
2019/01/28 Python
python使用tkinter库实现五子棋游戏
2019/06/18 Python
python使用matplotlib绘制雷达图
2019/10/18 Python
初学者学习Python好还是Java好
2020/05/26 Python
python制作一个简单的gui 数据库查询界面
2020/11/19 Python
conda安装tensorflow和conda常用命令小结
2021/02/20 Python
英国领先的隐形眼镜在线供应商:Lenstore.co.uk
2019/11/24 全球购物
初中三年学生的学习自我评价
2013/11/13 职场文书
职业道德模范事迹材料
2014/08/24 职场文书
2014院党委领导班子对照检查材料思想汇报
2014/09/24 职场文书
解除劳动合同证明书
2014/09/26 职场文书
农民工工资支付承诺书
2015/05/04 职场文书
中学生社会实践教育活动总结
2015/05/06 职场文书
只用40行Python代码就能写出pdf转word小工具
2021/05/31 Python
win10滚动条自动往上跑怎么办?win10滚动条自动往上跑的解决方法
2022/08/05 数码科技