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 相关文章推荐
JSON.stringify转换JSON时日期时间不准确的解决方法
Aug 08 Javascript
全面解析Bootstrap表单使用方法(表单控件状态)
Nov 24 Javascript
angularjs ocLazyLoad分步加载js文件实例
Jan 17 Javascript
Mongoose学习全面理解(推荐)
Jan 21 Javascript
js实现动态显示时间效果
Mar 06 Javascript
利用vue.js插入dom节点的方法
Mar 15 Javascript
微信小程序开发之toast提示插件使用示例
Jun 08 Javascript
Angular+Bootstrap+Spring Boot实现分页功能实例代码
Jul 21 Javascript
JS删除数组里的某个元素方法
Feb 03 Javascript
vue.js使用v-model指令实现的数据双向绑定功能示例
May 22 Javascript
[jQuery] 事件和动画详解
Mar 05 jQuery
解决vue中的无限循环问题
Jul 27 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
根德YB400的电路分析
2021/03/02 无线电
3种平台下安装php4经验点滴
2006/10/09 PHP
在字符串中把网址改成超级链接
2006/10/09 PHP
PHP 七大优势分析
2009/06/23 PHP
PHP输出XML到页面的3种方法详解
2013/06/06 PHP
Yii入门教程之Yii安装及hello world
2014/11/25 PHP
如何修改Laravel中url()函数生成URL的根地址
2017/08/11 PHP
如何用javascript去掉字符串里的所有空格
2007/02/08 Javascript
jQuery EasyUI 中文API Layout(Tabs)
2010/04/27 Javascript
统计jQuery中各字符串出现次数的工具
2012/05/03 Javascript
jquery默认校验规则整理
2014/03/24 Javascript
什么是Node.js?Node.js详细介绍
2014/06/01 Javascript
JavaScript正则表达式中的ignoreCase属性使用详解
2015/06/16 Javascript
javascript模块化简单解析
2016/04/07 Javascript
CSS3 media queries结合jQuery实现响应式导航
2016/09/30 Javascript
浅谈EasyUI常用控件的禁用方法
2016/11/09 Javascript
jQuery控制控件文本的长度的操作方法
2016/12/05 Javascript
bootstrap表单按回车会自动刷新页面的解决办法
2017/03/08 Javascript
jquery+css实现侧边导航栏效果
2017/06/12 jQuery
JS判断时间段的实现代码
2017/06/14 Javascript
详解动画插件wow.js的使用方法
2017/09/13 Javascript
JQuery中queue方法用法示例
2019/01/31 jQuery
微信小程序上传图片到php服务器的方法
2019/05/23 Javascript
vue中音频wavesurfer.js的使用方法
2020/02/20 Vue.js
深入源码解析Python中的对象与类型
2015/12/11 Python
python添加模块搜索路径方法
2017/09/11 Python
对TensorFlow的assign赋值用法详解
2018/07/30 Python
python调用虹软2.0第三版的具体使用
2019/02/22 Python
让你的Python代码实现类型提示功能
2019/11/19 Python
Python内置函数locals和globals对比
2020/04/28 Python
名词解释WEB SERVICE,SOAP,UDDI,WSDL,JAXP,JAXM;JSWDL开发包的介绍。
2012/10/27 面试题
2014年大学团支部工作总结
2014/12/02 职场文书
2016年读书月活动总结范文
2016/04/06 职场文书
python process模块的使用简介
2021/05/14 Python
python 提取html文本的方法
2021/05/20 Python
Go语言编译原理之变量捕获
2022/08/05 Golang