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 相关文章推荐
关于IE浏览器以及Firefox下的javascript冒泡事件的响应层级
Oct 14 Javascript
jquery解析XML字符串和XML文件的方法说明
Feb 21 Javascript
jQuery $命名冲突解决方案汇总
Nov 13 Javascript
详解JavaScript的Polymer框架中的通知交互
Jul 29 Javascript
js实现跨域的几种方法汇总(图片ping、JSONP和CORS)
Oct 25 Javascript
在页面中输出当前客户端时间javascript实例代码
Mar 02 Javascript
超实用的javascript时间处理总结
Aug 16 Javascript
详解Angular 4.x 动态创建组件
Apr 25 Javascript
JS中数据结构与算法---排序算法(Sort Algorithm)实例详解
Jun 17 Javascript
小程序实现锚点滑动效果
Sep 23 Javascript
vue搜索页开发实例代码详解(热门搜索,历史搜索,淘宝接口演示)
Apr 11 Javascript
vue3如何优雅的实现移动端登录注册模块
Mar 29 Vue.js
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中memcache的应用
2013/06/18 PHP
laravel 5 实现模板主题功能(续)
2015/03/02 PHP
PHP使用内置函数file_put_contents写入文件及追加内容的方法
2015/12/07 PHP
PHP引用返回用法示例
2016/05/28 PHP
Thinkphp5框架实现图片、音频和视频文件的上传功能详解
2019/08/27 PHP
基于jQuery的试卷自动排版系统实现代码
2011/01/06 Javascript
编写可维护面向对象的JavaScript代码[翻译]
2011/02/12 Javascript
javaScript(JS)替换节点实现思路介绍
2013/04/17 Javascript
JS合并数组的几种方法及优劣比较
2014/09/19 Javascript
Jquery插件仿百度搜索关键字自动匹配功能
2016/05/11 Javascript
如何用js实现鼠标向上滚动时浮动导航
2016/07/18 Javascript
JavaScript基于DOM操作实现简单的数学运算功能示例
2017/01/16 Javascript
PHP实现本地图片上传和验证功能
2017/02/27 Javascript
jQuery Pagination分页插件使用方法详解
2017/02/28 Javascript
H5实现中奖记录逐行滚动切换效果
2017/03/13 Javascript
Vue键盘事件用法总结
2017/04/18 Javascript
AngularJS ionic手势事件的使用总结
2017/08/09 Javascript
简单的网页广告特效实例
2017/08/19 Javascript
详解Vue-cli代理解决跨域问题
2017/09/27 Javascript
使用FileReader API创建Vue文件阅读器组件
2018/04/03 Javascript
ajax跨域访问遇到的问题及解决方案
2019/05/23 Javascript
vue props对象validator自定义函数实例
2019/11/13 Javascript
[43:58]DOTA2上海特级锦标赛C组败者赛 Newbee VS Archon第二局
2016/02/27 DOTA
[01:59][TI9趣味视频] 全明星赛奖励
2019/08/23 DOTA
初步认识Python中的列表与位运算符
2015/10/12 Python
Python之自动获取公网IP的实例讲解
2017/10/01 Python
Python实现 版本号对比功能的实例代码
2019/04/18 Python
python 搜索大文件的实例代码
2019/07/08 Python
pytorch在fintune时将sequential中的层输出方法,以vgg为例
2019/08/20 Python
英国领先的男士美容护发用品公司:Mankind
2016/08/31 全球购物
学校募捐倡议书
2014/05/14 职场文书
地质工程专业毕业生求职信
2014/08/08 职场文书
研究生给导师的自荐信
2015/03/06 职场文书
六年级作文之预言作文
2019/10/25 职场文书
HTML5来实现本地文件读取和写入的实现方法
2021/05/25 HTML / CSS
IDEA2021.2配置docker如何将springboot项目打成镜像一键发布部署
2021/09/25 Java/Android