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的横向滚动条(滑动条)
Feb 24 Javascript
Flexigrid在IE下不显示数据的处理的解决方法
Oct 24 Javascript
学习AngularJs:Directive指令用法(完整版)
Apr 26 Javascript
详解js实现线段交点的三种算法
Aug 09 Javascript
JS返回只包含数字类型的数组实例分析
Dec 16 Javascript
Javascript中常用类型的格式化方法小结
Dec 26 Javascript
JavaScript循环遍历你会用哪些之小结篇
Sep 28 Javascript
AngularJS上传文件的示例代码
Nov 10 Javascript
详解用JS添加和删除class类名
Mar 25 Javascript
Javascript如何实现双指控制图片功能
Feb 25 Javascript
vue输入框使用模糊搜索功能的实现代码
May 26 Javascript
原生JavaScript实现轮播图
Jan 10 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知识收集
2012/08/20 PHP
PHP从FLV文件获取视频预览图的方法
2015/03/12 PHP
Laravel 5 框架入门(一)
2015/04/09 PHP
php页面跳转session cookie丢失导致不能登录等问题的解决方法
2016/12/12 PHP
解决form中action属性后面?传递参数 获取不到的问题
2017/07/21 PHP
基于jquery自定义图片热区效果
2012/07/21 Javascript
firefox浏览器不支持innerText的解决方法
2013/08/07 Javascript
根据配置文件加载js依赖模块
2014/12/29 Javascript
js实现有时间限制消失的图片方法
2015/02/27 Javascript
AngularJS基础学习笔记之简单介绍
2015/05/10 Javascript
实例讲解避免javascript冲突的方法
2016/01/03 Javascript
Js+Ajax,Get和Post在使用上的区别小结
2016/06/08 Javascript
js canvas仿支付宝芝麻信用分仪表盘
2016/11/16 Javascript
老生常谈jquery id选择器和class选择器的区别
2017/02/12 Javascript
Node.js使用Koa搭建 基础项目
2018/01/08 Javascript
JavaScript获取用户所在城市及地理位置
2018/04/21 Javascript
js中getter和setter用法实例分析
2018/08/14 Javascript
Elasticsearch实现复合查询高亮结果功能
2019/09/10 Javascript
django如何通过类视图使用装饰器
2019/07/24 Python
Python中的 sort 和 sorted的用法与区别
2019/08/10 Python
python 调用pyautogui 实时获取鼠标的位置、移动鼠标的方法
2019/08/27 Python
python pip安装包出现:Failed building wheel for xxx错误的解决
2019/12/25 Python
浅谈Python协程
2020/06/17 Python
python录音并调用百度语音识别接口的示例
2020/12/01 Python
python中判断数字是否为质数的实例讲解
2020/12/06 Python
使用CSS3编写灰阶滤镜来制作黑白照片效果的方法
2016/05/09 HTML / CSS
Timberland美国官网:全球领先的户外品牌
2016/08/15 全球购物
说出你对remoting 和webservice的理解和应用
2014/06/08 面试题
《和我们一样享受春天》教学反思
2014/02/07 职场文书
优秀团干部个人事迹
2014/05/29 职场文书
2014年党员加强作风建设思想汇报
2014/09/15 职场文书
报表员工作失误检讨书范文
2014/09/19 职场文书
医院领导班子整改方案
2014/10/01 职场文书
党员倡议书
2015/01/19 职场文书
python实现自动清理文件夹旧文件
2021/05/10 Python
Python pandas之求和运算和非空值个数统计
2021/08/07 Python