js-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. var bln = 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. }
  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. }
时间: 2024-10-10 10:51:18

js-map模拟的相关文章

利用Node.js实现模拟Session验证的登陆

1.身份验证和用户登陆 在一般的Web应用上,如果要实现用户登陆,最常用,也是最简单的方法就是使用Session,基本的思路是在Session中保留一些用户身份信息,然后每次在Session中取,如果信息不正确或不存在,那么身份验证失败,正确则成功. Session和Cookie是两个很相似的东西,都是字符串,只不过Session是保存在服务器上的,而Cookie是保存在本地的,所以Cookie是不能用作身份验证的.Session故名思议,肯定和客户端与服务器间建立的会话相关,Session的工

[Immutable.js] Differences between the Immutable.js Map() and List()

The Immutable.js Map() is analogous to a Javascript Object or Hash since it is comprised of key-value pairs. The Immutable.js List() is analogous to a Javascript Array and contains many of the same native methods. Let's compare the two and dive into

[Immutable.js] Working with Subsets of an Immutable.js Map()

Immutable.js offers methods to break immutable structures into subsets much like Array--for instance it has the all powerful slice()--and unlike Array it offers functional methods like take() and skip(). You get the best of both the imperative and fu

swiper.min.js.map访问404解决办法

引用swiper后,在网站加载时浏览器控制台会报错,如下图所示: 建议不使用Source Map功能,请把js压缩文件最后一行 //# sourceMappingURL=maps/swiper.min.js.map 删掉.以免在某些浏览器出现以下提示: //# sourceMappingURL=maps/swiper.min.js.map

[Javascript] Creating an Immutable Object Graph with Immutable.js Map()

Learn how to create an Immutable.Map() through plain Javascript object construction and also via array tuples. console.clear(); // Can be an object var map = Immutable.Map({key: "value"}); console.log(map.get("key")); //"value&quo

angularjs中 *.min.js.map 404的问题

初次使用AngularJS,在chrom调试的时候,出现如下问题: GET http://localhost:63342/luosuo/visitor/js/lib/angular-animate.min.js.map 404 (Not Found) register.html:1 GET http://localhost:63342/luosuo/visitor/js/lib/angular-route.min.js.map 404 (Not Found) 百度之,原因如下: 问题解决了的感觉

Ext js框架模拟Windows桌面菜单管理模板

一款超炫的后台,Ext模拟Windows桌面,Ext经典浅蓝风格,功能非常强大,包括最大化.最小化.状态栏.桌面图标等,不过需要非常懂Ext脚本的才可驾驭它.? 1.图片 ?2. [代码][HTML]代码  <html><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Ext 2.0 Desktop

多校第七场 DP+map模拟

HDU 4939 Stupid Tower Defense DP 推一下. #include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<map> #include<queue> #include<stack> #include<vector> #include<ctype.h> #include<

POJ 3087-Shuffle&#39;m Up(map+模拟)

题目地址:POJ 3087 题意:已知两堆牌数均为n的纸牌堆a和b的初始状态, 按给定规则能将他们相互交叉组合成一堆牌str,再将str的最底下的n张牌归为a,最顶的n张牌归为b,依此循环下去.现在输入a和b的初始状态 以及 预想的最终状态c,问a, b经过多少次洗牌之后,最终能达到状态c,若永远不可能相同,则输出"-1". 思路:用map记录一下当前str出现的状态,如果当前的str在前面出现过,那就输出-1,因为无论怎么变换都不会出现终态c.若果没有出现的话就继续洗牌然后分牌,一直

【UVA】230 - Borrowers(map模拟)

利用map<string,int>判断一本书的状态,0代表借出去了,1代表在书架,2代表借出去换回来但是还未放回书架 设计一些字符串的处理问题,用一些字符串搜索函数比如 strstr , strchar等等 14072706 230 Borrowers Accepted C++ 0.015 2014-08-21 02:59:27 AC代码: #include<cstdio> #include<cstring> #include<iostream> #incl