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 小型打飞机游戏实现原理说明
Oct 28 Javascript
javascript动态加载实现方法一
Aug 22 Javascript
jquery 提交值不为空的元素示例代码
May 10 Javascript
JavaScript实现简单图片翻转的方法
Apr 17 Javascript
设置点击文本框或图片弹出日历控件的实现代码
May 12 Javascript
BootStrap智能表单实战系列(六)表单编辑页面的数据绑定
Jun 13 Javascript
JavaScript事件详细讲解
Jun 27 Javascript
理解javascript中的Function.prototype.bind的方法
Feb 03 Javascript
微信小程序 UI与容器组件总结
Feb 21 Javascript
vue+element项目中过滤输入框特殊字符小结
Aug 07 Javascript
原生js实现贪吃蛇游戏
Oct 26 Javascript
vue3.0中setup使用(两种用法)
Dec 02 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
PHP5 的对象赋值机制介绍
2011/08/02 PHP
php二分查找二种实现示例
2014/03/12 PHP
PHP上传图片到数据库并显示的实例代码
2019/12/20 PHP
输入自动提示搜索提示功能的使用说明:sugggestion.txt
2013/09/02 Javascript
js获取html文件的思路及示例
2013/09/17 Javascript
Javascript检查图片大小不要让大图片撑破页面
2014/11/04 Javascript
JavaScript学习笔记之Function对象
2015/01/22 Javascript
js获取元素外链样式的方法
2015/01/27 Javascript
jQuery结合ajax实现动态加载文本内容
2015/05/19 Javascript
jQuery插件制作之全局函数用法实例
2015/06/01 Javascript
JavaScript实现的多个图片广告交替显示效果代码
2015/09/04 Javascript
深入理解$.each和$(selector).each
2016/05/15 Javascript
微信小程序loading组件显示载入动画用法示例【附源码下载】
2017/12/09 Javascript
微信小程序中实现手指缩放图片的示例代码
2018/03/13 Javascript
vue2.0 实现页面导航提示引导的方法
2018/03/13 Javascript
JavaScript事件委托原理与用法实例分析
2018/06/07 Javascript
vuejs实现折叠面板展开收缩动画效果
2018/09/06 Javascript
Webpack之tree-starking 解析
2018/09/11 Javascript
用Python代码来解图片迷宫的方法整理
2015/04/02 Python
详解Django中的ifequal和ifnotequal标签使用
2015/07/16 Python
简单谈谈Python中函数的可变参数
2016/09/02 Python
Python面向对象编程基础解析(一)
2017/10/26 Python
对pandas replace函数的使用方法小结
2018/05/18 Python
python中验证码连通域分割的方法详解
2018/06/04 Python
python实现通过flask和前端进行数据收发
2019/08/22 Python
python代码能做成软件吗
2020/07/24 Python
Python实现异步IO的示例
2020/11/05 Python
python从ftp获取文件并下载到本地
2020/12/05 Python
美国受信赖的教育产品供应商:Nest Learning
2018/06/14 全球购物
小区门卫管理制度
2014/01/29 职场文书
党员政治学习材料
2014/05/14 职场文书
乡镇三严三实学习心得体会
2014/10/13 职场文书
分居协议书范本
2014/11/03 职场文书
2015年宣传部个人工作总结
2015/05/14 职场文书
redis cluster支持pipeline的实现思路
2021/06/23 Redis
vue选项卡切换的实现案例
2022/04/11 Vue.js