1. /**
  2. * MAP对象,实现MAP功能
  3. *
  4. * 接口:
  5. * size() 获取MAP元素个数
  6. * isEmpty() 判断MAP是否为空
  7. * clear() 删除MAP所有元素
  8. * put(key, value) 向MAP中增加元素(key, value)
  9. * remove(key) 删除指定KEY的元素,成功返回True,失败返回False
  10. * get(key) 获取指定KEY的元素值VALUE,失败返回NULL
  11. * element(index) 获取指定索引的元素(使用element.key,element.value获取KEY和VALUE),失败返回NULL
  12. * containsKey(key) 判断MAP中是否含有指定KEY的元素
  13. * containsValue(value) 判断MAP中是否含有指定VALUE的元素
  14. * values() 获取MAP中所有VALUE的数组(ARRAY)
  15. * keys() 获取MAP中所有KEY的数组(ARRAY)
  16. *
  17. * 例子:
  18. * var map = new Map();
  19. *
  20. * map.put("key", "value");
  21. * var val = map.get("key")
  22. * ……
  23. *
  24. */
  25. function hashmap() {
  26. /**
  27. * 存放数据
  28. */
  29. this.data = new Object();
  30.  
  31. /**
  32. * 放入一个键值对
  33. * @param {String} key
  34. * @param {Object} value
  35. */
  36. this.put = function(key, value)
  37. {
  38. this.data[key] = value;
  39. };
  40.  
  41. /**
  42. * 获取某键对应的值
  43. * @param {String} key
  44. * @return {Object} value
  45. */
  46. this.get = function(key)
  47. {
  48. return this.containsKey(key)?this.data[key]:null;
  49. };
  50.  
  51. /**
  52. * 删除一个键值对
  53. * @param {String} key
  54. */
  55. this.remove = function(key)
  56. {
  57. delete this.data[key];
  58. };
  59.  
  60. /**
  61. * 遍历Map,执行处理函数
  62. *
  63. * @param {Function} 回调函数 function(key,value,index){..}
  64. */
  65. this.each = function(fn){
  66. if(typeof fn != 'function')
  67. {
  68. return;
  69. }
  70. var len = this.data.length;
  71. for(var i=0;i<len;i++)
  72. {
  73. var k = this.data[i];
  74. fn(k,this.data[k],i);
  75. }
  76. };
  77.  
  78. /**
  79. * 获取键值数组(类似Java的entrySet())
  80. * @return 键值对象{key,value}的数组
  81. */
  82. this.entrys = function()
  83. {
  84. var len = this.data.length;
  85. var entrys = new Array(len);
  86. for (var i = 0; i < len; i++) {
  87. entrys[i] = {
  88. key : i,
  89. value : this.data[i]
  90. };
  91. }
  92. return entrys;
  93. };
  94.  
  95. /**
  96. * 判断Map是否为空
  97. */
  98. this.isEmpty = function()
  99. {
  100. return this.data.length == 0;
  101. };
  102.  
  103. /**
  104. * 获取键值对数量
  105. */
  106. this.size = function()
  107. {
  108. return this.data.length;
  109. };
  110.  
  111. /**
  112. * 重写toString ,装成JSON格式
  113. */
  114. this.toString = function()
  115. {
  116. var s = "[";
  117. for(var i=0;i<this.data.length;i++,s+=','){
  118. var k = this.data[i];
  119. s += "{'id':'" + k+"','value':'"+this.data[k]+"'}";
  120. }
  121. s=s.substring(0, s.length-1);
  122. if(s!=""){
  123. s+="]";
  124. }
  125. return s;
  126. };
  127.  
  128. /**
  129. * 输出Value的值
  130. */
  131. this.values = function (){
  132. var _values= new Array();
  133. for(var key in this.data)
  134. {
  135. _values.push(this.data[key]);
  136. }
  137. return _values;
  138. };
  139.  
  140. /**
  141. * 获取keys
  142. */
  143. this.keySet = function (){
  144. var _keys = new Array();
  145. for(var key in this.data)
  146. {
  147. _keys.push(key);
  148. }
  149. return _keys;
  150. };
  151.  
  152. /**
  153. * 判断MAP中是否含有指定KEY的元素
  154. */
  155. this.containsKey = function(_key)
  156. {
  157. return (_key in this.data);
  158. };
  159.  
  160. /**
  161. * 清空Map
  162. */
  163. this.clear = function(){
  164. this.data.length = 0;
  165. this.data = new Object();
  166. };
  167. }

js hashMap的更多相关文章

  1. JS hashMap实例详解

    链接:http://www.jb51.net/article/85111.htm JS hashMap实例详解 作者:囧侠 字体:[增加 减小] 类型:转载 时间:2016-05-26我要评论 这篇文 ...

  2. JS实现HashMap

    /** * ********* 操作实例 ************** * var map = new HashMap(); * map.put("key1","Valu ...

  3. js数组,数字函数,字符串函数,表单验证,hashMap,堆栈,日期函数,call函数

    1.javascript的数组API Js代码 收藏代码 //定义数组 var pageIds = new Array(); pageIds.push('A'); 数组长度 pageIds.lengt ...

  4. js写的一个HashMap

    1.脚本 /** * 模拟HashMap */ function HashMap(){ //定义长度 var length = 0; //创建一个对象 var obj = new Object(); ...

  5. 学习Redis你必须了解的数据结构——HashMap实现

    本文版权归博客园和作者吴双本人共同所有,转载和爬虫请注明原文链接博客园蜗牛 cnblogs.com\tdws . 首先提供一种获取hashCode的方法,是一种比较受欢迎的方式,该方法参照了一位园友的 ...

  6. 微信调用照相拍照等 js 接口的权限配置 和 照片上传和下载实现

    直接上代码: 1. 前端调试代码: <html> <head> <meta http-equiv="Content-Type" content=&qu ...

  7. 微信JS SDK配置授权,实现分享接口

    微信开放的JS-SDK面向网页开发者提供了基于微信内的网页开发工具包,最直接的好处就是我们可以使用微信分享.扫一扫.卡券.支付等微信特有的能力.7月份的时候,因为这个分享的证书获取问题深深的栽了一坑, ...

  8. Android—android与js交互以及相互传参

    Android中可以通过WebView来实现与js的交互,让用户可以在android客户端看到js写的页面,接下来为大家介绍的就是怎样实现此功能: 首先android项目目录下有“assets”文件夹 ...

  9. 使用ajaxfileupload.js实现文件上传

    ajaxFileUpload是一个异步上传文件的jQuery插件 语法:$.ajaxFileUpload([options]) options参数说明: 1.url  上传处理程序地址. 2,file ...

随机推荐

  1. oracle to_date函数(转载)

    TO_DATE格式(以时间:2007-11-02   13:45:25为例)           Year:              yy two digits 两位年                ...

  2. poj 2892 Tunnel Warfare(线段树)

    Tunnel Warfare Time Limit: 1000MS   Memory Limit: 131072K Total Submissions: 7499   Accepted: 3096 D ...

  3. Mysql常用操作记录

    在linux平台中相关的MySql操作 打开Mysql mysql -uroot -p  //-u后边为用户名,-p后边为密码    1:使用SHOW语句找出在服务器上当前存在什么数据库:mysql& ...

  4. Esper系列(九)NamedWindow语法create、Insert、select

    功能:用于存储一种或多种类型的事件的集合,并能对所存储的事件进行增删改查操作. CreateNameWindow 根据已有的数据源构造 格式: 1  [context context_name]  2 ...

  5. Got error creating database manager: java.io.IOException解决方法

    14/03/26 23:03:55 ERROR tool.BaseSqoopTool: Got error creating database manager: java.io.IOException ...

  6. HW5.13

    public class Solution { public static void main(String[] args) { System.out.printf("%s\t%s\n&qu ...

  7. ZOJ-2362 Beloved Sons 贪心 | KM

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2362 裸的匹配问题,直接KM,就算是O(n^4)的KM也不会超. ...

  8. Scala IDE for Eclipse的下载、安装和WordCount的初步使用(本地模式和集群模式)

    包括: Scala IDE for Eclipse的下载  Scala IDE for Eclipse的安装 本地模式或集群模式 我们知道,对于开发而言,IDE是有很多个选择的版本.如我们大部分人经常 ...

  9. A Tour of Go Variables with initializers

    A var declaration can include initializers, one per variable. If an initializer is present, the type ...

  10. DATASNAP倒底能承受多大的负载能力

    DATASNAP是针对企业数据中间件市场而推出来的产品,如果在其它领域用它可能就不会合适. DATASNAP通信使用INDY10,INDY是阻塞型SOCKET. 1.如果使用TCP/IP长连接,DAT ...