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

JavaScript创建Map对象(转)的更多相关文章

  1. JavaScript之Map对象

    前言 工欲善其事,必先利其器.这是一款以前在前端项目中没有使用过的.有趣的对象,咱来看看如何使用~ 并非arrayObj.map(function) //arrayObj.map与arrayObj.f ...

  2. javascript自定义Map对象

    javascript定义map对象开发前端组件的重要性就不过多阐述了,直接参考以下案例即可 <script type=text/javascript charset=utf-8> func ...

  3. javascript创建自定义对象和prototype

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. 自定义实现JavaScript的Map对象,修改IE不兼容MAP()的问题

    由于IE8及以下版本不支持Map对象,本文为程序猿们提供了有效的解决方法. 本文重写了Map对象,实现了常用的set, get, put, clear, remove, delete, forEach ...

  5. 每天一点点之javascript(ES6) - Map对象

    1.语法 键/值对的集合. mapObj = new Map() 注:集合中的键和值可以是任何类型.如果使用现有密钥向集合添加值,则新值会替换旧值. 2.属性下表列出了 Map 对象的属性和描述. 构 ...

  6. JavaScript 创建类/对象的几种方式

    在JS中,创建对象(Create Object)并不完全是我们时常说的创建类对象,JS中的对象强调的是一种复合类型,JS中创建对象及对对象的访问是极其灵活的. JS对象是一种复合类型,它允许你通过变量 ...

  7. JavaScript—创建正则对象

    创建正则对象 方式1: var reg = new RegExp('\d', 'i');var reg = new RegExp('\d', 'gi'); 方式2: var reg = /\d/i;v ...

  8. 通过JavaScript创建Qml对象

    有两种方法可以创建,都是全局对象Qt提供的方法 一:用Qt.createComponent加载一个qml文件并创建Component 二:用Qt.createQmlObject从一个qml字符串创建C ...

  9. 【微信小程序开发之坑】javascript创建date对象

    最近开发中用到date,开始以如下方式来创建: var date = new Date('2018-01-30 11:00:00'); 在开发工具上,调试,ios 和 android都好好的. 在真机 ...

随机推荐

  1. IntelliJ IDEA 13 Keygen

    import java.math.BigInteger; import java.util.Date; import java.util.Random; import java.util.zip.CR ...

  2. cocos2d-x CocoStudio中场景触发器(Trigger)的代码部分和触发器之间的互调

    这节继上一篇触发器扩展,讲一下代码部分的实现. 事件:EventDef.h 只有一个枚举,是对触发器事件的编号 #ifndef__EVENTDEF__ #define__EVENTDEF__ enum ...

  3. C#学习7

    一.变量交换 ; ; Console.WriteLine("开始a={0},b={1}",a,b); a = a + b; b = a - b; a = a - b; Consol ...

  4. mybatis系列-14-延迟加载

    14.1     什么是延迟加载 resultMap可以实现高级映射(使用association.collection实现一对一及一对多映射),association.collection具备延迟加载 ...

  5. http-equiv

    HTTP-EQUIV类似于HTTP的头部协议,它回应给浏览器一些有用的信息,以帮助正确和精确地显示网页内容.常用的HTTP-EQUIV类型有:Content-Type.Refresh .Expires ...

  6. kali ssh 登录

    kali 开启ssh 登录:可在windows 中通过 xshell 登录,方便操作. 修改sshd_config文件, vi /etc/ssh/sshd_config 将#PasswordAuthe ...

  7. Embedded之memory test

    1 main.c #include "led.h" #define BASE_ADDRESS (volatile datum *) 0x10000000 #define NUM_B ...

  8. Mapreduce执行过程分析(基于Hadoop2.4)——(一)

    1 概述 该瞅瞅MapReduce的内部运行原理了,以前只知道个皮毛,再不搞搞,不然怎么死的都不晓得.下文会以2.4版本中的WordCount这个经典例子作为分析的切入点,一步步来看里面到底是个什么情 ...

  9. php 的简单易用的调式方法,打印方法

    简单的调试方法:echo, print_r, var_dump, exit, debug_backtrace(), debug_print_backtrace(), gettype(), get_cl ...

  10. LINQ标准查询操作符(一)——select、SelectMany、Where、OrderBy、OrderByDescending、ThenBy、ThenByDescending和Reverse

    一.投影操作符 1. Select Select操作符对单个序列或集合中的值进行投影.下面的示例中使用select从序列中返回Employee表的所有列: //查询语法 var query = fro ...