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 相关文章推荐
JS去除字符串两端空格的简单实例
Dec 27 Javascript
javascript 中__proto__和prototype详解
Nov 25 Javascript
JavaScript返回网页中锚点数目的方法
Apr 03 Javascript
实例讲解js验证表单项是否为空的方法
Jan 09 Javascript
详解AngularJS ui-sref的简单使用
Apr 24 Javascript
浅谈node中的exports与module.exports的关系
Aug 01 Javascript
微信小程序如何获取openid及用户信息
Jan 26 Javascript
Vue组件之极简的地址选择器的实现
May 31 Javascript
原生js实现ajax请求和JSONP跨域请求操作示例
Mar 14 Javascript
vue项目打包后提交到git上为什么没有dist这个文件的解决方法
Sep 16 Javascript
vuex的数据渲染与修改浅析
Nov 26 Vue.js
微信小程序视频弹幕发送功能的实现
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下通过file_get_contents的代理使用方法
2011/02/16 PHP
php中smarty实现多模版网站的方法
2015/06/11 PHP
python进程与线程小结实例分析
2018/11/11 PHP
Laravel5.1 框架Request请求操作常见用法实例分析
2020/01/04 PHP
js函数般调用正则
2008/04/08 Javascript
javascript 关闭IE6、IE7
2009/06/01 Javascript
解决jquery .ajax 在IE下卡死问题的解决方法
2009/10/26 Javascript
javascript GUID生成器实现代码
2009/10/31 Javascript
JavaScript Perfection kill 测试及答案
2010/03/23 Javascript
使用CSS和jQuery模拟select并附提交后取得数据的代码
2013/10/18 Javascript
js设置function参数默认值(适合没有传参情况)
2014/02/24 Javascript
node.js实现端口转发
2016/04/14 Javascript
Angular 2父子组件数据传递之局部变量获取子组件其他成员
2017/07/04 Javascript
基于Ionic3实现选项卡切换并重新加载echarts
2020/09/24 Javascript
[00:34]DOTA2上海特级锦标赛 VG战队宣传片
2016/03/04 DOTA
基于Python中单例模式的几种实现方式及优化详解
2018/01/09 Python
Python使用matplotlib简单绘图示例
2018/02/01 Python
Python切片索引用法示例
2018/05/15 Python
Python OOP类中的几种函数或方法总结
2019/02/22 Python
基于Pytorch SSD模型分析
2020/02/18 Python
python中线程和进程有何区别
2020/06/17 Python
Python 为什么推荐蛇形命名法原因浅析
2020/06/18 Python
python 生成器需注意的小问题
2020/09/29 Python
一篇文章教你用python画动态爱心表白
2020/11/22 Python
税务专业毕业生自荐信
2013/11/10 职场文书
优秀学生自我鉴定范例
2013/12/18 职场文书
校长先进事迹材料
2014/02/01 职场文书
工程类专业自荐信范文
2014/03/09 职场文书
报纸媒体创意广告词
2014/03/17 职场文书
建筑工程技术专业求职信
2014/07/16 职场文书
买房协议书范本
2014/10/23 职场文书
银行实习推荐信
2015/03/27 职场文书
2019最新企业员工考勤管理制度(通用版)!
2019/07/02 职场文书
什么是创业计划书?什么是商业计划书?这里一一解答
2019/07/12 职场文书
中国古代史学名著《战国策》概述
2019/08/09 职场文书
分布式锁为什么要选择Zookeeper而不是Redis?看完这篇你就明白了
2021/05/21 Redis