定义Map

  1. /**
  2. * Map
  3. * */
  4. function Map() {
  5. /** 存放键的数组(遍历用到) */
  6. this.keys = new Array();
  7. /** 存放数据 */
  8. this.data = new Object();
  9.  
  10. /**
  11. * 放入一个键值对
  12. * @param {String} key
  13. * @param {Object} value
  14. */
  15. this.put = function(key, value) {
  16. if(this.data[key] == null){
  17. this.keys.push(key);
  18. }
  19. this.data[key] = value;
  20. };
  21.  
  22. /**
  23. * 获取某键对应的值
  24. * @param {String} key
  25. * @return {Object} value
  26. */
  27. this.get = function(key) {
  28. return this.data[key];
  29. };
  30.  
  31. /**
  32. * 删除一个键值对
  33. * @param {String} key
  34. */
  35. this.remove = function(key) {
  36. this.keys.remove(key);
  37. this.data[key] = null;
  38. };
  39.  
  40. /**
  41. * 遍历Map,执行处理函数
  42. *
  43. * @param {Function} 回调函数 function(key,value,index){..}
  44. */
  45. this.each = function(fn){
  46. if(typeof fn != 'function'){
  47. return;
  48. }
  49. var len = this.keys.length;
  50. for(var i=0;i<len;i++){
  51. var k = this.keys[i];
  52. fn(k,this.data[k],i);
  53. }
  54. };
  55.  
  56. /**
  57. * 遍历Map,执行处理函数,可添加参数
  58. *
  59. * @param {Function} 回调函数 function(key,value,index){..}
  60. */
  61. this.eachByParam = function(fn,param){
  62. if(typeof fn != 'function'){
  63. return;
  64. }
  65. var len = this.keys.length;
  66. for(var i=0;i<len;i++){
  67. var k = this.keys[i];
  68. fn(k,this.data[k],i,param);
  69. }
  70. };
  71.  
  72. /**
  73. * 获取键值数组(类似Java的entrySet())
  74. * @return 键值对象{key,value}的数组
  75. */
  76. this.entrys = function() {
  77. var len = this.keys.length;
  78. var entrys = new Array(len);
  79. for (var i = 0; i < len; i++) {
  80. entrys[i] = {
  81. key : this.keys[i],
  82. value : this.data[i]
  83. };
  84. }
  85. return entrys;
  86. };
  87.  
  88. /**
  89. * 判断Map是否为空
  90. */
  91. this.isEmpty = function() {
  92. return this.keys.length == 0;
  93. };
  94.  
  95. /**
  96. * 获取键值对数量
  97. */
  98. this.size = function(){
  99. return this.keys.length;
  100. };
  101.  
  102. /**
  103. * 重写toString
  104. */
  105. this.toString = function(){
  106. var s = "{";
  107. for(var i=0;i<this.keys.length;i++,s+=','){
  108. var k = this.keys[i];
  109. s += k+"="+this.data[k];
  110. }
  111. s+="}";
  112. return s;
  113. };
  114. }

使用的话

  1. var map = new Map();
  2. map.xxx

JavaScript:Map使用的更多相关文章

  1. JavaScript Map 和 Set

    结论 Map:存放键值对,区别于 Object,键可以是任何值. Set:存放不重复的值 Map 存储键值对,读取时与插入顺序一致. var map = new Map([[1, "1&qu ...

  2. js javascript map函数去重功能的使用实例

    js javascript map函数去重功能的使用实例 先上一个实战例子代码 var map = new Map(); for(var i=0; i<=9; i++){ map.set(i,i ...

  3. 一个简单的JavaScript Map

    用js写了一个Map,带遍历功能,请大家点评下啦. //map.js Array.prototype.remove = function(s) { for (var i = 0; i < thi ...

  4. Arcgis for javascript map操作addLayer具体解释

    本节的内容非常easy.说说Arcgis for Javascript里面map对象的addLayer方法.在for JS的API中,addLayer方法有两种.例如以下图: watermark/2/ ...

  5. javascript Map和Set

    Map和Set JavaScript的默认对象表示方式{}可以视为其他语言中的Map或Dictionary的数据结构,即一组键值对. 但是JavaScript的对象有个小问题,就是键必须是字符串.但实 ...

  6. Arcgis for javascript map操作addLayer详解

    本节的内容很简单,说说Arcgis for Javascript里面map对象的addLayer方法.在for JS的API中,addLayer方法有两种,如下图: addLayer方法 在addLa ...

  7. JavaScript Map 和 Object 的区别

    不同点 Key filed 在 Object 中, key 必须是简单数据类型(整数,字符串或者是 symbol),而在 Map 中则可以是 JavaScript 支持的所有数据类型,也就是说可以用一 ...

  8. javascript map forEach filter some every在购物车中的实战演练区分用法

    1.map forEach 1.map 循环遍历每一项,返回一个新的数组 例: 购物车商品小计: //购物车 var cart=[ {"id":101,"name&quo ...

  9. JavaScript --- Map集合结构详解

    Map 对象保存键值对.任何值(对象或者原始值) 都可以作为一个键或一个值. 语法 new Map([iterable]) 参数 iterable Iterable 可以是一个数组或者其他 itera ...

  10. JavaScript Map 实现

    //定义map function Map() { this.container = {}; } //将key-value放入map中 Map.prototype.put = function(key, ...

随机推荐

  1. convert from EST/EDT to GMT

    TimeZoneInfo est = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time"); DateTime ...

  2. Delphi 完全时尚手册之 Visual Style 篇

    这里先说说两个概念:Theme(主题)和 Visual Style .Theme 最早出现在 Microsoft Plus! for Windows 95 中,是 Windows 中 Wallpape ...

  3. Django创建模型_模型层

    1.在项目Mysite下创建应用bms 2.在bms下的models.py文件中创建模型 from django.db import models # Create your models here. ...

  4. python cookbook第三版学习笔记九:函数

    接受任意数量参数的函数. 当传入函数的参数个数很多的时候,在函数定义的时候不需要为每一个参数定义一个变量,可以用*rest的方式来包含多余的参数. 如下面的代码,*rest包含了2,3,4这3个参数. ...

  5. SVN支干合并(转载)

    分支用来维护独立的开发支线,在一些阶段,你可能需要将分支上的修改合并到最新版本,或者将最新版本的修改合并到分支. 此操作十分重要,在团队开发中,如果你是SVN 的维护者此环节可以说是必不可少,因为团队 ...

  6. 关于SAP S4 HANA 的13个问题

    SAP S/4HANA的路线图是怎样的?价格是多少?下一步还将添加哪些新模块?莫不闻专业SAP问答平台结合SAP HANA及SAP HANA应用商务套件开发全球负责人Uwe Grigoleit帮大家整 ...

  7. ABAP screen

    Instance One : SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-100. SELECTION-SCREEN BEGIN ...

  8. [LeetCode] 698. Partition to K Equal Sum Subsets

    Problem Given an array of integers nums and a positive integer k, find whether it's possible to divi ...

  9. 微信公众号支付 redirect_uri 参数错误

    登录微信公众平台 1.配置 公众号设置-功能设置 JS接口安全域名 网页授权域名 2.配置 微信支付-开发配置 支付授权目录 测试授权目录 测试白名单    

  10. 《机器学习实战》学习笔记第三章 —— 决策树之ID3、C4.5算法

    主要内容: 一.决策树模型 二.信息与熵 三.信息增益与ID3算法 四.信息增益比与C4.5算法 五.决策树的剪枝 一.决策树模型 1.所谓决策树,就是根据实例的特征对实例进行划分的树形结构.其中有两 ...