国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

JavaScript中利用Array和Object實現(xiàn)Map的方法

2024-05-06 16:23:49
字體:
供稿:網(wǎng)友

這篇文章主要介紹了JavaScript中利用Array和Object實現(xiàn)Map的方法,實例分析了javascript實現(xiàn)map的添加、獲取、移除、清空、遍歷等操作技巧,具有一定參考借鑒價值,需要的朋友可以參考下

本文實例講述了JavaScript中利用Array和Object實現(xiàn)Map的方法。分享給大家供大家參考。具體如下:

昨天突然看到以前別人用JavaScript實現(xiàn)的Map感覺很不錯,但是發(fā)現(xiàn)有個別方法有問題,順便完善了下,添加了 remove 、indexOf 、values、clear等方法。

 

 
  1. /** 
  2. * @author blune68 
  3. * @version 0.1, 07/27/12 
  4.  
  5. */ 
  6. function Map(){ 
  7. this.keys = new Array();  
  8. this.data = new Object(); 
  9. var toString = Object.prototype.toString; 
  10. /** 
  11. * 當前Map當前長度 
  12. */ 
  13. this.size = function(){ 
  14. return this.keys.length; 
  15. /** 
  16. * 添加值 
  17. * @param {Object} key 
  18. * @param {Object} value 
  19. */ 
  20. this.put = function(key, value){ 
  21. if(this.data[key] == null){ 
  22. this.data[key] = value; 
  23. this.keys.push(key); 
  24. /** 
  25. * 根據(jù)當前key獲取value 
  26. * @param {Object} key 
  27. */ 
  28. this.get = function(key){ 
  29. return this.data[key]; 
  30. /** 
  31. * 根據(jù)當前key移除Map對應(yīng)值 
  32. * @param {Object} key 
  33. */ 
  34. this.remove = function(key){ 
  35. var index = this.indexOf(key); 
  36. if(index != -1){ 
  37. this.keys.splice(index, 1); 
  38. this.data[key] = null
  39. /** 
  40. * 清空Map 
  41. */ 
  42. this.clear = function(){ 
  43. for(var i=0, len = this.size(); i < len; i++){ 
  44. var key = this.keys[i]; 
  45. this.data[key] = null
  46. this.keys.length = 0; 
  47. /** 
  48. * 當前key是否存在 
  49. * @param {Object} key 
  50. */ 
  51. this.containsKey = function(key){ 
  52. return this.data[key] != null
  53. /** 
  54. * 是否為空 
  55. */ 
  56. this.isEmpty = function(){ 
  57. return this.keys.length === 0; 
  58. /** 
  59. * 類型Java中Map.entrySet 
  60. */ 
  61. this.entrySet = function(){ 
  62. var size = this.size(); 
  63. var datas = new Array(size); 
  64. for (var i = 0, len = size; i < len; i++) { 
  65. var key = this.keys[i]; 
  66. var value = this.data[key]; 
  67. datas[i] = { 
  68. 'key' : key, 
  69. 'value':value  
  70. return datas; 
  71. /** 
  72. * 遍歷當前Map 
  73. * var map = new Map(); 
  74. * map.put('key', 'value'); 
  75. * map.each(function(index, key, value){ 
  76. * console.log("index:" + index + "--key:" + key + "--value:" + value) 
  77. * }) 
  78. * @param {Object} fn 
  79. */ 
  80. this.each = function(fn){ 
  81. if(toString.call(fn) === '[object Function]'){ 
  82. for (var i = 0, len = this.size(); i < len; i++) { 
  83. var key = this.keys[i]; 
  84. fn(i, key, this.data[key]); 
  85. return null
  86. /** 
  87. * 獲取Map中 當前key 索引值 
  88. * @param {Object} key 
  89. */ 
  90. this.indexOf = function(key){ 
  91. var size = this.size(); 
  92. if(size > 0){ 
  93. for(var i=0, len=size; i < len; i++){ 
  94. if(this.keys[i] == key) 
  95. return i; 
  96. return -1; 
  97. /** 
  98. * Override toString 
  99. */ 
  100. this.toString = function(){ 
  101. var str = "{"
  102. for (var i = 0, len = this.size(); i < len; i++, str+=",") { 
  103. var key = this.keys[i]; 
  104. var value = this.data[key]; 
  105. str += key + "=" + value;  
  106. str = str.substring(0, str.length-1); 
  107. str += "}"
  108. return str; 
  109. /** 
  110. * 獲取Map中的所有value值(Array) 
  111. */ 
  112. this.values = function(){ 
  113. var size = this.size(); 
  114. var values = new Array(); 
  115. for(var i = 0; i < size; i++){ 
  116. var key = this.keys[i]; 
  117. values.push(this.data[key]); 
  118. return values; 

希望本文所述對大家的javascript程序設(shè)計有所幫助。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 施甸县| 盐源县| 藁城市| 抚松县| 四子王旗| 宣汉县| 武鸣县| 巨野县| 宜兴市| 岱山县| 博乐市| 汝南县| 澜沧| 柘荣县| 乐东| 遂川县| 湄潭县| 望城县| 松桃| 日照市| 兰州市| 定南县| 巴南区| 兴仁县| 崇义县| 洪泽县| 五大连池市| 柞水县| 拜城县| 泾川县| 喜德县| 张家港市| 娱乐| 嘉黎县| 宁安市| 白玉县| 尚义县| 阳春市| 隆林| 浑源县| 博野县|