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 CSS样式控制 学习笔记
Jul 23 Javascript
Web开发者必备的12款超赞jQuery插件
Dec 03 Javascript
jQuery mobile转换url地址及获取url中目录部分的方法
Dec 04 Javascript
JavaScript代码实现图片循环滚动效果
Mar 19 Javascript
Node接收电子邮件的实例代码
Jul 21 Javascript
EasyUI的DataGrid每行数据添加操作按钮的实现代码
Aug 22 Javascript
如何选择适合你的JavaScript框架
Nov 20 Javascript
angularjs实现柱状图动态加载的示例
Dec 11 Javascript
vue router 用户登陆功能的实例代码
Apr 24 Javascript
node.js ws模块搭建websocket服务端的方法示例
Apr 25 Javascript
使用Bootstrap做一个朝代历史表
Dec 10 Javascript
vue实现简单图片上传
Jun 30 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
一个cssQuery对象 javascript脚本实现代码
2009/07/21 Javascript
JS 时间显示效果代码
2009/08/23 Javascript
学习ExtJS form布局
2009/10/08 Javascript
qTip 基于JQuery的Tooltip插件[兼容性好]
2010/09/01 Javascript
jQuery实现复选框全选/取消全选/反选及获得选择的值
2014/06/12 Javascript
jQuery+css实现的切换图片功能代码
2016/01/27 Javascript
JS判断浏览器是否安装flash插件的简单方法
2016/09/13 Javascript
JQuery form表单提交前验证单选框是否选中、删除记录时验证经验总结(整理)
2017/06/09 jQuery
vue.extend实现alert模态框弹窗组件
2018/04/28 Javascript
使用electron实现百度网盘悬浮窗口功能的示例代码
2018/10/24 Javascript
在vue项目中引入vue-beauty操作方法
2019/02/11 Javascript
解决node.js含有%百分号时发送get请求时浏览器地址自动编码的问题
2019/11/20 Javascript
[03:22]DAC最前线(第二期)—DOTA2亚洲邀请赛主赛场周边及线路探访
2015/01/24 DOTA
利用Python绘制数据的瀑布图的教程
2015/04/07 Python
Python中Continue语句的用法的举例详解
2015/05/14 Python
在Python的Django框架的视图中使用Session的方法
2015/07/23 Python
Python爬虫:url中带字典列表参数的编码转换方法
2019/08/21 Python
windows中安装Python3.8.0的实现方法
2019/11/19 Python
tensorflow mnist 数据加载实现并画图效果
2020/02/05 Python
浅谈ROC曲线的最佳阈值如何选取
2020/02/28 Python
django实现模型字段动态choice的操作
2020/04/01 Python
什么是python的自省
2020/06/21 Python
Python 如何调试程序崩溃错误
2020/08/03 Python
德国EGOIST网店:销售畅销的设计师品牌
2017/04/18 全球购物
塔吉特百货公司官网:Target
2017/04/27 全球购物
澳大利亚先进的皮肤和激光诊所购物网站:Soho Skincare
2018/10/15 全球购物
美国最大婚纱连锁店运营商:David’s Bridal
2019/03/12 全球购物
培训楼经理岗位责任制
2014/02/10 职场文书
教师师德承诺书
2014/03/26 职场文书
农村葬礼主持词
2014/03/31 职场文书
《翻越远方的大山》教学反思
2014/04/13 职场文书
纪检干部个人对照检查材料
2014/09/23 职场文书
党员身份证明材料
2015/06/19 职场文书
解决 redis 无法远程连接
2022/05/15 Redis
JS轻量级函数式编程实现XDM二
2022/06/16 Javascript
Pygame游戏开发之太空射击实战敌人精灵篇
2022/08/05 Python