Javacript中自定义的map.js 的方法

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  的方法,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

(0)

相关推荐

  • JS自定义对象实现Java中Map对象功能的方法

    本文实例讲述了JS自定义对象实现Java中Map对象功能的方法.分享给大家供大家参考.具体分析如下: Java中有集合,Map等对象存储工具类,这些对象使用简易,但是在JavaScript中,你只能使用Array对象. 这里我创建一个自定义对象,这个对象内包含一个数组来存储数据,数据对象是一个Key,可以实际存储的内容!   这里Key,你要使用String类型,和Java一样,你可以进行一些增加,删除,修改,获得的操作. 使用很简单,我先把工具类给大家看下: 复制代码 代码如下: /**  *

  • 实例解析Json反序列化之ObjectMapper(自定义实现反序列化方法)

    对于服务器端开发人员而言,调用第三方接口获取数据,将其"代理"转化并返给客户端几乎是家常便饭的事儿.    一般情况下,第三方接口返回的数据类型是json格式,而服务器开发人员则需将json格式的数据转换成对象,继而对其进行处理并封装,以返回给客户端. 在不是特别考虑效率的情况下(对于搜索.缓存等情形可以考虑使用thrift和protobuffer),通常我们会选取jackson包中的ObjectMapper类对json串反序列化以得到相应对象.通常会选取readValue(Strin

  • Javacript中自定义的map.js 的方法

    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

  • Javacript中自定义的map.js  的方法

    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

  • Android开发中自定义ProgressBar控件的方法示例

    本文实例讲述了Android开发中自定义ProgressBar控件的方法.分享给大家供大家参考,具体如下: 很简单,首先加载Drawable,在onMeasure设置好其区域大小, 然后使用canvas.clipRect绘图 public class ProgressView extends ImageView { private Drawable maskDraw; /** * 加载的进度 0-100 */ private int mProcess = 20; public ProgressV

  • C++中vector和map的删除方法(推荐)

    1.连续内存序列容器(vector,string,deque) 序列容器的erase方法返回值是指向紧接在被删除元素之后的元素的有效迭代器,可以根据这个返回值来安全删除元素. vector<int> c; for(vector<int>::iterator it = c.begin(); it != c.end();) { if(need_delete()) it = c.erase(it); else ++it; } 2.关联容器(set,multiset,map,multima

  • Vue中自定义全局组件的实现方法

    前言 有时候我们在做开发的时候,就想自己写一个插件然后就可以使用自己的插件,那种成就感很强.今天就解决了一个长期困扰着我的问题,现在记录一下,供日后参考. 涉及知识点是Vue.js官网教程中的插件使用 方法如下: 首先我遇到的问题就是我自定义的组件如果需要在项目中其他组件中多次被调用,而我之前的解决方法就是简单的,哪里需要在哪引用.这无疑增加了许多代码重复. 而在使用Vue.js的一些UI框架的时候则注意到,只需要在项目的入口文件中import这个插件然后在接着Vue.use('插件名').这样

  • 详解在iOS App中自定义和隐藏状态栏的方法

    自定义状态栏 有时候,需要在状态栏上显示一些自定义信息,比如新浪微博的官方iOS客户端:告知用户信息处于发送队列.发送成功或者发送失败. 如上图,通过在状态栏显示自定义信息,可以给用户友好又不影响软件使用的提示. 为此,我们显得定义一个自定义状态栏类,包含一个显示信息的Label: 复制代码 代码如下: @interface CustomStatusBar : UIWindow  {      UILabel *_messageLabel;  }    - (void)showStatusMes

  • 实例讲解Android应用中自定义组合控件的方法

    自定义view大概可以分成: 继承view 组合view 自己画的view(用paint和canvas) 自定义viewgroup(widget) 最近又跟同学聊起来了,于是就准备自己实现一个imagebutton来练练手.(最简单的了)以及后面一个把imageview与textview结合使用的案例. ImageButton 要实现ImageButton最容易想到的不就是把button和imageview合在一起么.嗯,人容易就想到这是一个组合自定义view.可是如何把一个image放到but

  • c#中自定义Base16编码解码的方法示例

    一.自定义Base16编码原理 Base16编码跟Base64编码原理上有点不同,当然前面转换是一样的,都是是将输入的字符串根据默认编码转换成一个字节序列,而这个字节序列里面其实就是存的ASCII码,其次,将每个ASCII码转换成8位二进制,每个八位二进制拆分成4位一组的二进制,然后将每4位一组的二进制转换成十进制, 最后,根据十进制的数字索引密文下标的字符,将这些字符串联起来就是编码的字符串. 例子:abc ASCII码:          97                  98    

  • .net中自定义错误页面的实现方法

    前言: 在实际的web开发中,经常会遇到以下情况,导致给用不好的体验: a.程序未处理的异常,直接输出显示到用户页面 b.用户访问的资源不存在,直接显示系统默认的404页面 c.其它以下请求错误状态的系统默认页面(403等) 为了给用户友好的体验,在实际项目开发中, 需要对系统会不同的异常定制相应的友好提示页面 .net中自定义异常页面的重定向都是通过web.config配置页面配置实现,其具体的实现方式有两种方式,下面话不多说了,来一起看看详细的介绍吧. 其一.通过节点system.web新增

  • Android中 自定义数据绑定适配器BaseAdapter的方法

    复制代码 代码如下: public class PersonAdapter extends BaseAdapter { private List persons;// 要绑定的数据 private int resource;// 绑定的一个条目界面的id,此例中即为item.xml private LayoutInflater inflater;// 布局填充器,它可以使用一个xml文件生成一个View对象,可以通过Context获取实例对象 public PersonAdapter(Conte

随机推荐