当前位置: 首页 > 编程笔记 >

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

端木兴国
2023-03-14
本文向大家介绍Javacript中自定义的map.js  的方法,包括了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  的方法,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

 类似资料:
  • 我正在尝试为处理COPY HTTP方法的资源创建一个自定义Spring MVC控制器。 @请求映射只接受以下请求方法值:GET、HEAD、POST、PUT、PATCH、DELETE、OPTIONS和TRACE。 在Spring MVC控制器中处理自定义HTTP方法是否有任何推荐的方法?

  • 在自定义arrayAdapter中实现自定义getFilter时遇到问题。实际上,我不知道如何实现它。尝试了各种代码,但仍然没有成功。这是我的自定义阵列适配器。 这是ListTO课程。 这是布局图。 这里的搜索关键字来自“inputSearch”编辑文本。 这是文本更改的侦听器。 谢谢

  • 问题内容: 因此,我正在用Java开发DVD租赁系统,并且遇到了视图问题。这是我的代码: 现在,Member和Item只是我制作的代表用户(成员)和电影/游戏(Item)的对象类。 和 我的问题是,我对如何创建自定义的,覆盖的“ SetValueAt()”方法以用“成员/项”中的信息填充JTables感到困惑。另一个问题是侦听器类中的所有空if语句。我不确定如何执行它们。如果有人可以就任何这些问题

  • 本章将会讨论如何在API设计中使用自定义方法。 自定义方法指的是五个标准方法之外的API方法。他们应当仅用于标准方法不易表达的功能。一般而言,API设计者应当尽可能优先考虑使用标准方法,而不是自定义方法。标准方法相对更简单,定义完善的语义,并且开发者也更加熟悉;这使标准方法更易用,并且使用者更难犯错。使用标准方法的另一个优势是API平台会有更好的支持,如计费、错误处理、日志、监控等等。 自定义方法

  • 本文向大家介绍wxWidgets自定义按钮的方法,包括了wxWidgets自定义按钮的方法的使用技巧和注意事项,需要的朋友参考一下 场景: 1.现在的软件上的按钮都不是标准的按钮了,因为基本上是贴图上去的,正常情况下一种图片,鼠标移上去之后按钮显示另一种效果,按下去之后又是另一种效果。 2.wx的做法其实和mfc的按钮原理是一样的,就是给按钮贴图和重绘背景。 以下是源文件. dh_bitmap_b

  • 本文向大家介绍在C++中自定义宏的简单方法,包括了在C++中自定义宏的简单方法的使用技巧和注意事项,需要的朋友参考一下 可以使用宏定义没有返回值的“函数”。例如:       这样的“函数”与真正意义上的函数有本质的区别,因为宏是一个编译前行为,仅仅是编译前对文本进行替换。在Python源码中,经常可以看到下面类似的宏定义:     为什么要使用do { ... } while (0)这样的语法而