首页 > 语言 > JavaScript > 正文

JavaScript中实现map功能代码分享

2024-05-06 16:22:09
字体:大 中 小
来源:转载
供稿:网友

这篇文章主要介绍了JavaScript中实现map功能代码分享,本文直接给出实现代码,给出一个MAP类,类中包含大多数的常用方法,还可以自己扩展,需要的朋友可以参考下

 

 
  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 Map() { 
  26. this.elements = new Array(); 
  27.  
  28. //获取MAP元素个数 
  29. this.size = function() { 
  30. return this.elements.length; 
  31. } 
  32.  
  33. //判断MAP是否为空 
  34. this.isEmpty = function() { 
  35. return(this.elements.length < 1); 
  36. } 
  37.  
  38. //删除MAP所有元素 
  39. this.clear = function() { 
  40. this.elements = new Array(); 
  41. } 
  42.  
  43. //向MAP中增加元素(key, value) 
  44. this.put = function(_key, _value) { 
  45. this.elements.push( { 
  46. key : _key, 
  47. value : _value 
  48. }); 
  49. } 
  50.  
  51. //删除指定KEY的元素,成功返回True,失败返回False 
  52. this.remove = function(_key) { 
  53. var bln = false; 
  54. try{ 
  55. for(i = 0; i < this.elements.length; i++) { 
  56. if(this.elements[i].key == _key) { 
  57. this.elements.splice(i, 1); 
  58. return true; 
  59. } 
  60. } 
  61. } catch(e) { 
  62. bln = false; 
  63. } 
  64. return bln; 
  65. } 
  66.  
  67. //获取指定KEY的元素值VALUE,失败返回NULL 
  68. this.get = function(_key) { 
  69. try{ 
  70. for(i = 0; i < this.elements.length; i++) { 
  71. if(this.elements[i].key == _key) { 
  72. return this.elements[i].value; 
  73. } 
  74. } 
  75. } catch(e) { 
  76. return null; 
  77. } 
  78. } 
  79.  
  80. //获取指定索引的元素(使用element.key,element.value获取KEY和VALUE),失败返回NULL 
  81. this.element = function(_index) { 
  82. if(_index < 0 || _index >= this.elements.length) { 
  83. return null; 
  84. } 
  85. return this.elements[_index]; 
  86. } 
  87.  
  88. //判断MAP中是否含有指定KEY的元素 
  89. this.containsKey = function(_key) { 
  90. varbln = false; 
  91. try{ 
  92. for(i = 0; i < this.elements.length; i++) { 
  93. if(this.elements[i].key == _key) { 
  94. bln = true; 
  95. } 
  96. } 
  97. } catch(e) { 
  98. bln = false; 
  99. } 
  100. return bln; 
  101. } 
  102.  
  103. //判断MAP中是否含有指定VALUE的元素 
  104. this.containsValue = function(_value) { 
  105. var bln = false; 
  106. try{ 
  107. for(i = 0; i < this.elements.length; i++) { 
  108. if(this.elements[i].value == _value) { 
  109. bln = true; 
  110. } 
  111. } 
  112. } catch(e) { 
  113. bln = false; 
  114. } 
  115. return bln; 
  116. } 
  117.  
  118. //获取MAP中所有VALUE的数组(ARRAY) 
  119. this.values = function() { 
  120. var arr = new Array(); 
  121. for(i = 0; i < this.elements.length; i++) { 
  122. arr.push(this.elements[i].value); 
  123. } 
  124. return arr; 
  125. } 
  126.  
  127. //获取MAP中所有KEY的数组(ARRAY) 
  128. this.keys = function() { 
  129. var arr = new Array(); 
  130. for(i = 0; i < this.elements.length; i++) { 
  131. arr.push(this.elements[i].key); 
  132. } 
  133. return arr; 
  134. } 
  135. } 

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选