Map.js 3.4 KB

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