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 相关文章推荐
javascript之typeof、instanceof操作符使用探讨
May 19 Javascript
cookie.js 加载顺序问题怎么才有效
Jul 31 Javascript
js字符串截取函数substr substring slice使用对比
Nov 27 Javascript
JS实现网页表格自动变大缩小的方法
Mar 09 Javascript
JQuery显示隐藏页面元素的方法总结
Apr 16 Javascript
javascript实现倒计时(精确到秒)
Jun 26 Javascript
BootStrap的alert提示框的关闭后再显示怎么解决
May 17 Javascript
AngularJS入门教程之链接与图片模板详解
Aug 19 Javascript
Vue.js开发环境快速搭建教程
Mar 17 Javascript
深入解析ES6中的promise
Nov 08 Javascript
JavaScript实现与使用发布/订阅模式详解
Jan 19 Javascript
微信小程序视频弹幕发送功能的实现
Dec 28 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数据库操作类代码(增,删,改,查)
2013/04/08 PHP
PHP使用CURL模拟登录的方法
2015/07/08 PHP
Symfony的安装和配置方法
2016/03/17 PHP
php for 循环使用的简单实例
2016/06/02 PHP
php 基础函数
2017/02/10 PHP
php常用字符串长度函数strlen()与mb_strlen()用法实例分析
2019/06/25 PHP
Yii2.0框架模型多表关联查询示例
2019/07/18 PHP
[IE&amp;FireFox兼容]JS对select操作
2007/01/07 Javascript
JavaScript的变量作用域深入理解
2009/10/25 Javascript
基于js disabled=&quot;false&quot;不起作用的解决办法
2013/06/26 Javascript
node+express+jade制作简单网站指南
2014/11/26 Javascript
使用js画图之画切线
2015/01/12 Javascript
javascript实现的简单的表单验证
2015/07/10 Javascript
通过设置CSS中的position属性来固定层的位置
2015/12/14 Javascript
jQuery unbind()方法实例详解
2016/01/19 Javascript
XML、HTML、CSS与JS的区别整理
2016/02/18 Javascript
jQuery实现级联下拉框实战(5)
2017/02/08 Javascript
vue + socket.io实现一个简易聊天室示例代码
2017/03/06 Javascript
微信小程序实现登录页云层漂浮的动画效果
2017/05/05 Javascript
详谈innerHTML innerText的使用和区别
2017/08/18 Javascript
Node.js实现连接mysql数据库功能示例
2017/09/15 Javascript
jQuery插件实现的日历功能示例【附源码下载】
2018/09/07 jQuery
vue-cli history模式实现tomcat部署报404的解决方式
2019/09/06 Javascript
详解Vue中的MVVM原理和实现方法
2020/07/15 Javascript
[45:56]Ti4正赛第一天 VG vs NEWBEE 3
2014/07/19 DOTA
python调用新浪微博API项目实践
2014/07/28 Python
Python编程中time模块的一些关键用法解析
2016/01/19 Python
python函数中return后的语句一定不会执行吗?
2017/07/06 Python
详解python配置虚拟环境
2019/04/08 Python
感知器基础原理及python实现过程详解
2019/09/30 Python
Python实现自动打开电脑应用的示例代码
2020/04/17 Python
检察官就职演讲稿
2014/01/13 职场文书
市场营销个人求职信范文
2014/02/02 职场文书
文体活动实施方案
2014/03/27 职场文书
高考1977观后感
2015/06/04 职场文书
Unity连接MySQL并读取表格数据的实现代码
2021/06/20 MySQL